如何在ORDER BY if语句中使用ASC / DESC?

Gab*_*ele 2 mysql sorting

问题是:“如何通过使用if值的sql语句排序?”

我有一个表,其中有一个参数,使用此参数,我必须按ASC或DESC排序单个列。我该如何实现?

我知道ASC和DESC参数不能在IF块中(并且具有类似这样的结构。“ IF(Type ='1',等级,等级)ASC / DESC”),因此可以选择订购里面选择一个参数的基础?

该表是这样的:

ID | RANKING | TYPE
--------------------
1 | 12 | 1
2 | 10 | 1
3 | 14 | 2
4 | 15 | 2
Run Code Online (Sandbox Code Playgroud)

Type = 1必须是ASC顺序,Type = 2必须是DESC顺序,因此我的SELECT的预期结果可能是:

ID | RANKING | TYPE
--------------------
2 | 10 | 1
1 | 12 | 1
4 | 15 | 2
3 | 14 | 2
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

ype*_*eᵀᴹ 5

ORDER BY type 
       , CASE WHEN type = 1
                THEN ranking 
              ELSE NULL               --- implied, this line can be omitted
                                      --- or changed into:   ELSE ''
                                      --- or:    ELSE someConstant
         END 
       , ranking DESC
Run Code Online (Sandbox Code Playgroud)