[英]Ordering by a column that doesn't exist?
我正在看数据库编程书(它使用MySql)中的一个示例,该示例如何从表中选择随机行:
SELECT * FROM Bugs ORDER BY RAND() LIMIT 1;
我对如何通过不存在的列进行订购感到困惑。 那等于
SELECT *, RAND() AS temp FROM BUGS ORDER BY temp LIMIT 1;
除了从结果中取消temp
列?
基本上是同一回事。 唯一的区别是该值不在结果集中。 还有另一个细微的差别。 select
的rand()
应该在Bugs
每行评估一次。 我认为按order by
的rand()
可能会更频繁地求值(这取决于实现方式)。 在这种情况下,随机顺序无论哪种方式都是随机顺序,因此这种细微差别不会产生任何影响。
不要因没有按select
的order by
出现表达式而感到困惑。 这并不少见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.