我正在看数据库编程书(它使用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/

10-11 19:56