MySQL:按两列的顺序排序,最后是NULL吗?

Men*_*sch 3 mysql sql-order-by

我知道SO上有类似的问题,但不幸的是我没找到答案,所以问这里.

我的结果表结构如下所示:

id    item_id   price    group
-------------------------------
1     3472      NULL      
2     234       300      1
3     4872      150      1
4     1109      100
5     5582      300      0
6     144       150      2
7     1384      NULL     1
8     627       100      2
Run Code Online (Sandbox Code Playgroud)

price列可以有NULL,group列可以有空结果.

该表可按价格排序.

我需要的是:

  1. 按两列排序结果集 - 价格

  2. 具有相同结果的结果price必须首先根据他们的组进行ordererd(升序),具有相同价格但没有组的结果跟在他们之后.

  3. 无论price排序顺序(DESC或ASC)如何,NULL总是必须是最后的.

因此,具有排序的表应如下所示:

id    item_id   price    group
-------------------------------
8     627       100      2
4     1109      100
3     4872      150      1
6     144       150      2
5     5582      300      0
2     234       300      1
7     1384      NULL     1
1     3472      NULL      
Run Code Online (Sandbox Code Playgroud)

当我需要最后使用NULL订购时,我会使用以下内容:

ORDER BY ISNULL(column), column
Run Code Online (Sandbox Code Playgroud)

通过多列排序通常不是问题,但我只是坚持这一个.我花了几个小时没有结果.

小智 5

ORDER BY IF( ISNULL( price ), 1, 0 ), price, IF( group='', 1, 0 ), group ASC
Run Code Online (Sandbox Code Playgroud)