【问题标题】:SQL order by RAND() [duplicate]RAND()的SQL顺序[重复]
【发布时间】:2015-11-23 19:46:28
【问题描述】:

不明白为什么 order by RAND() 会以随机顺序返回记录? RAND() 返回一个介于 0 和 1 之间的值,我认为我们应该按列名排序?

如果有人能解释为什么 order by RAND() 会以随机顺序返回行,不胜感激。谢谢。

顺便说一句,我正在使用 MySQL Workbench/MySQL。

提前致谢,

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    ORDER BY RAND() 将整个表复制到一个临时表中,并添加一个具有随机值的新列。最后,它按该列对数据进行排序。

    这当然会影响性能,所以不推荐。

    更多信息:

    http://www.roberthartung.de/mysql-order-by-rand-a-case-study-of-alternatives/

    http://wanderr.com/jay/order-by-slow/2008/01/30/

    https://bugs.mysql.com/bug.php?id=65177

    【讨论】:

    • 谢谢,如果我想随机选择10行,如何通过RAND()实现?
    • 那将是 SELECT * FROM table ORDER BY RAND() LIMIT 10;
    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    相关资源
    最近更新 更多