MySQL Order通过与另一列相关的列ASC / DESC

时间:2018-05-31 02:47:35

标签: mysql sql

我在数据库中有两列如下:

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查询来获取它呢?

2 个答案:

答案 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;