我刚开始学习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();
但我仍然不知道它为什么会起作用。
答案 0 :(得分:3)
它对数据进行排序,以使IF(birth IS NULL, 0, 1)
返回0的行出现在返回1的行之前。
您可能会注意到这与您写的内容完全不同:
ORDER BY 1;
在这种情况下,它按结果列表中的第一列排序。这是过时的语法,但仍然是SQL标准所必需的。