ORDER BY只适用于列吗?

use*_*338 2 sql

SELECT * FROM TABLE ORDER BY RAND()工作为什么?我认为ORDER BY只适用于列.

那么究竟是什么意思ORDER BY RAND()还是ORDER BY SUM()

the*_*ega 10

你可以通过几乎所有的东西,函数(如RAND()),聚合(如SUM())等来订购.

例如,MySQL-Documentation表示为语法:

 [ORDER BY {col_name | expr | position}
Run Code Online (Sandbox Code Playgroud)

或者Postgresql文档更加明确:

可选的ORDER BY子句具有以下通用形式:

ORDER BY expression [ ASC | DESC | USING operator ] [, ...]

expression可以是输出列的名称或序号(SELECT列表项),也可以是由输入列值组成的任意表达式.

对于你的第二个问题:

  • ORDER BY RAND()或者ORDER BY RANDOM()说它的内容:你的行被扭转了,你可以随机顺序得到它们.所以,如果你做了一个,SELECT * FROM ... ORDER BY RAND() LIMIT 1你从表中选择一个(= 1)随机行.
  • ORDER BY SUM(Column)只有与GROUP BY陈述相结合才有意义.