我有一个像(MS ACCESS)这样的查询。
number values in the IN caluse is a variant
。在给定的例子中,我只给出了4.somethimes超过30个数字。
SELECT ID
FROM TableName
WHERE (ID IN (16, 18, 15, 20 ))
Result : 15 ,16,18,20
有没有办法检索same order
caluse中给出的IN
值。
结果应该是Result : 16,18,15,20
答案 0 :(得分:3)
你可以这样做:
SELECT DISTINCT t1.ID
FROM TableName t1
INNER JOIN
(
SELECT 1 sortorder, 16 ID
UNION ALL
SELECT 2, 18
UNION ALL
SELECT 3, 15
UNION ALL
SELECT 4, 20
) t2 ON t1.ID = t2.ID
ORDER BY t2.sortorder
答案 1 :(得分:1)
无法告诉数据库引擎检查IN()
列表中值的顺序,并将相同的顺序应用于ORDER BY
。
您可以使用Switch()
表达式应用相同的排序,但是您必须同步Switch()
和In()
。
SELECT id
FROM YourTable
WHERE id In (16,18,15,20)
ORDER BY
Switch(
id=16,1,
id=18,2,
id=15,3,
id=20,4
);