当ORDER BY给出一个数字时会发生什么?

时间:2011-04-25 03:05:38

标签: mysql sql-order-by

我刚开始学习MySQL,我正在阅读的书中有以下示例:

SELECT last_name, first_name, birth FROM president
ORDER BY IF(birth IS NULL,0,1), birth DESC;

我想知道的是这些数字(0和1)如何影响ORDER BY的行为 - 当你给ORDER BY一个数字时,它对它有什么影响?

我发现的提示是随机排序按以下方式完成:

SELECT * from TABLE ORDER BY rand();

但我仍然不知道它为什么会起作用。

1 个答案:

答案 0 :(得分:3)

它对数据进行排序,以使IF(birth IS NULL, 0, 1)返回0的行出现在返回1的行之前。

您可能会注意到这与您写的内容完全不同:

ORDER BY 1;

在这种情况下,它按结果列表中的第一列排序。这是过时的语法,但仍然是SQL标准所必需的。