我不太确定如何说出这个问题。但如果你想象我有:
var contents = "5, 7, 1, 3, 4";
我想做一个查询:
SELECT id,name FROM db WHERE id in (contents);
我会得到以下回复(a):
ID NAME
1 ONE
3 THREE
4 FOUR
5 FIVE
7 SEVEN
但实际上,我希望按内容顺序排序,即(b):
ID NAME
5 FIVE
7 SEVEN
1 ONE
3 THREE
4 FOUR
反正有没有将响应命令为b而不是a
ANSI SQL方法使用巨大的case
表达式:
SELECT id,name
FROM db
WHERE id in (contents)
ORDER BY (CASE id WHEN 5 THEN 1 WHEN 7 THEN 2 WHEN 1 THEN 3 WHEN 3 THEN 4 WHEN 4 THEN 5 END);
使用标准ANSI SQL,您可以加入指定排序顺序的值列表:
select t.*
from the_table t
join (
values
(5, 1),
(7, 2),
(1, 3),
(3, 4),
(4, 5)
) as s (id, sort_order) on t.id = s.id
order by s.sort_order ;