首先按null排序,然后按其他变量排序

Joh*_*han 7 mysql

这是我现在的代码:

SELECT id, number
FROM Media
WHERE user = 10
ORDER BY id, number
Run Code Online (Sandbox Code Playgroud)

但我希望它看起来像:

SELECT id, number
FROM Media
WHERE user = 10
ORDER BY while(number IS NULL), id
Run Code Online (Sandbox Code Playgroud)

我想要做的是将所有number这些都NULL放在结果的顶部,但是尽快number不是NULL,排序依据id

那可能吗?

我用的是mysql.

Pas*_*TIN 20

这样的事情怎么样:

SELECT id, number
FROM Media
WHERE user = 10
ORDER BY (case when number is null then 0 else 1 end), id
Run Code Online (Sandbox Code Playgroud)

如果number为NULL,则按条件的第一个顺序将为0; else 1
这意味着每行将编号为NULL的行将在其他行之前

请注意,无论如何,ids也会被排序.

你会得到这样的东西:

  • 数字无效; ID = 1
  • 数字无效; ID = 2
  • 数字无效; ID = 5
  • 数字无效; ID = 8
  • 数字不为空; ID = 3
  • 数字不为空; ID = 4
  • 数字不为空; ID = 7
  • 数字不为空; ID = 10
  • 数字不为空; ID = 12