SQL,按输入的数据排序

时间:2018-03-06 11:57:27

标签: sql

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

func

我想做一个查询:

var contents = "5, 7, 1, 3, 4";

我会得到以下回复(a)

SELECT id,name FROM db WHERE id in (contents);

但实际上,我希望按内容顺序排序,即(b)

ID      NAME
1       ONE
3       THREE
4       FOUR
5       FIVE
7       SEVEN

无论如何要将resposne命名为 b 而不是 a

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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