我如何编写我的SQL Order By以遵循IN参数中的安排

时间:2019-02-12 02:35:10

标签: sql sql-server

我需要让我的SQL中的ORDER BY遵循基于WHERE IN参数的安排。这是我当前的SQL

SELECT a.code, a.name 
FROM sometable a 
WHERE a.code IN ('D001sa', 'EX!5', 'A$34')

我需要得到的结果是:

a.code      a.name
--------------------
'D001sa'    Home
'EX!5'      Family
'A$34'      Green

如果我有ORDER BY a.codea.name,我将无法获得所需的结果。

2 个答案:

答案 0 :(得分:4)

我建议使用values()

SELECT a.code, a.name 
FROM sometable a JOIN
     (VALUES ('D001sa', 1), ('EX!5', 2), ('A$34', 3)
     ) v(code, ord)
     ON a.code = v.code
ORDER BY ord;

答案 1 :(得分:0)

您可以使用前面所述的值,也可以使用INNER JOIN复合UNION查询。

SELECT a.code, a.name FROM sometable st
INNER JOIN 
(
   SELECT code = 'D001sa', order = 1
   UNION
   SELECT code = 'EX!5', order = 2
   UNION
   SELECT code = 'A$34', order = 3
)AS X ON x.code=st.code
ORDER BY
    X.order