MYSQL 排序依据 - NULL 值影响我的结果

MYSQL order by - NULL values impacting my results

大约 200 行的 table,其中 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 中的 null,并通过将它们移动到末尾的表达式进行排序:

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

如果你反转 rankclass 的符号,你可以降序排序,最后留下空值,例如

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

Example on db<>fiddle