我需要让我的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.code
或a.name
,我将无法获得所需的结果。
答案 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