MYSQL按NULL排序的值会影响我的结果



一个约有200行的表,其中15行的数值为rankClass(1-15(。其余的将具有NULL值。

ORDER BY rankClass, nameLast

它首先发布具有NULL值的行,当然,当我添加DESC时,它会首先列出设置行,但15-1。我希望它先列出那些有值的,1-15,然后按nameLast列出其余的。

我试过合并,但结果是1,10,11,12,13,14,15,2,3,4,5,6,7,8,9。

我该如何获得我想要的结果?

您可以显式检查rankClass中的nulls,并通过将它们移动到末尾的表达式排序:

SELECT   *
FROM     mytable
ORDER BY rankClass IS NULL, -- false comes before true
rankClass

如果将rankclass的符号反转,则可以降序排序,最后留下null,例如

SELECT RankClass, NameLast
FROM T
ORDER BY -RankClass DESC, nameLast;

数据库示例<gt;小提琴

最新更新