我知道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
price
列可以包含NULL,group
列可以包含空结果。
该表格按价格排序。
我需要的是:
按两列排序结果集 - 价格和组
相同price
的结果必须根据他们的顺序进行ordererd
第一组(升序),具有相同价格但没有组的结果跟在它们之后。
无论price
排序顺序如何,NULL总是必须是最后一个(DESC
或ASC)。
因此,具有排序的表应如下所示:
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
当我需要最后订购NULL时,我会使用类似的东西:
ORDER BY ISNULL(column), column
通过多列排序通常不是问题,但我只是坚持这个。我花了几个小时没有结果。
答案 0 :(得分:5)
ORDER BY IF( ISNULL( price ), 1, 0 ), price, IF( group='', 1, 0 ), group ASC