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列可以有空结果.
该表可按价格排序.
我需要的是:
按两列排序结果集 - 价格和组
具有相同结果的结果price必须首先根据他们的组进行ordererd(升序),具有相同价格但没有组的结果跟在他们之后.
无论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)