我正在看数据库编程书(它使用MySql)中的一个示例,该示例如何从表中选择随机行:
SELECT * FROM Bugs ORDER BY RAND() LIMIT 1;
我对如何通过不存在的列进行订购感到困惑。那等于
SELECT *, RAND() AS temp FROM BUGS ORDER BY temp LIMIT 1;
除了从结果中取消
temp
列? 最佳答案
基本上是同一回事。唯一的区别是该值不在结果集中。还有另一个细微的差别。 rand()
中的select
应该在Bugs
中每行评估一次。我认为rand()
中的order by
可能会得到更频繁的评估(这取决于实现方式)。在这种情况下,随机顺序是任意一种方式的随机顺序,因此这种细微差别不会有所不同。order by
中不存在的select
表达式不应使您感到困惑。这并不少见。
关于mysql - 按不存在的列排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37636500/