按 IN 运算符中指定的特定顺序选择 ID

Ori*_*rin 4 sql sql-server

我想尝试按特定顺序选择一组特定的数字,以用于循环。

SELECT ID 
FROM filter 
WHERE id in (87, 97, 117, 52, 240, 76, 141, 137, 157, 255, 186, 196, 133,
             175, 153, 224, 59, 205, 65, 47, 105, 80, 113, 293, 161, 145,
             192, 149, 231, 91, 101, 109, 215, 121, 125, 64, 41, 291, 367,
             388, 391, 462, 467) 
Run Code Online (Sandbox Code Playgroud)

这样做会返回按 ID 排序的结果,而不是我指定的顺序。在大多数其他类似问题中,首选答案是对特定条目使用 CASE,但如何按预定顺序选择数百条记录呢?

Gor*_*off 5

如果您有数百个项目,则使用派生表,例如:

select f.id
from filter f join
     (values(1, 87), (2, 97), (3, 117), . . .) as v(ord, id)
     on f.id = v.id
order by ord;
Run Code Online (Sandbox Code Playgroud)