问题是:“如何通过使用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)
有什么想法吗?
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)
| 归档时间: |
|
| 查看次数: |
12355 次 |
| 最近记录: |