我在数据库中有两列如下:
ColumnA ColumnB
NULL 1
2 1
NULL 3
1 3
NULL 2
1 2
我想:
第一步,对columnA进行排序,将NULL行放在顶部,然后是NotNull行。所以它应该是:
NULL 1
NULL 3
NULL 2
2 1
1 3
1 2
第二步(我想在最后得到的),当columnA为Null时对columnB,asc columnB进行排序,当columnA为NotNull时对desc columnB进行排序,因此它应为:
NULL 1
NULL 2
NULL 3
1 3
1 2
2 1
那么,我怎样才能制作一个mysql查询来获取它呢?
答案 0 :(得分:1)
怎么样:
select a,b from t order by a, case when a is null then b end, b desc
或者也许......
SELECT a,b FROM t ORDER BY a,CASE WHEN a IS NULL THEN b* -1 ELSE b END DESC;
答案 1 :(得分:0)
我相信你想要:
select a, b
from t
order by (a is null) desc, -- put null values on top
(case when a is null then b end) asc,
b desc;