我正在尝试编写一个SQLite查询,该查询首先通过名为mytable
的列对表status_id
进行排序,然后通过名为name
的列进行排序,但使用以下附加约束:< / p>
SELECT name,
status_id
FROM mytable
ORDER BY status_id, name
生成一个正确排序的表。
例如(姓名,状态):(“b”,1),(“a”,2),(“c”,2),(“b”,3),(“a”,4)。 ..但是我需要相同类型的输出,但任何结果status_id
等于2,都在结果的顶部。
e.g。 (“a”,2),(“c”,2),(“b”,1),(“b”,3),(“a”,4)......
我想出了这个,但它没有按要求运行,因为列表也没有按名称排序:
SELECT name,
status_id
FROM mytable
ORDER BY CASE status_id
WHEN 2 THEN 0 ELSE 1 END DESC
答案 0 :(得分:3)
在按CASE语句排序之后,仍然需要按status_id和name排序。
SELECT name
, status_id
FROM mytable
ORDER BY
CASE WHEN status_id = 2 THEN 1 ELSE 0 END DESC
,status_id
,name
答案 1 :(得分:2)
只需按status_id
对其余内容进行排序,然后在name
添加ORDER BY
:
SELECT name, status_id
FROM mytable
ORDER BY CASE status_id
WHEN 2 THEN -1
ELSE status_id
END,
name
答案 2 :(得分:2)
最后还添加status_id, name
:
SELECT name, status_id FROM mytable
ORDER BY CASE status_id WHEN 2 THEN 1 ELSE 0 END DESC, status_id, name