SQL,按输入的数据排序

问题描述 投票:0回答:2

我不太确定如何说出这个问题。但如果你想象我有:

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

sql
2个回答
2
投票

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);

0
投票

使用标准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 ;

在线示例:http://rextester.com/UDW37167

© www.soinside.com 2019 - 2024. All rights reserved.