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

标签 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) 

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

最佳答案

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

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;

关于sql - 按 IN 运算符中指定的特定顺序选择 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32356519/

相关文章:

sql-server - Azure SQL 数据库中的 SQL Server Telegraf 插件需要哪些拨款

mysql - 无法解析接近于的表名

sql - 如何为 Spark SQL DataFrame 映射构造 ClassTag?

Mysql dump 命令与 MS SQL Server 类似

sql - 如何从出生日期计算年龄(年.月格式)

SQL:通过是和否显示表及其作业

php - MySQL 匹配字符串的所有出现位置

mysql - 按日期和时间存储在两个不同的列mysql中

java - java中如何区分主键和唯一键约束

sql - 如何在 SQL 查询中将另一列的最大日期添加到新列中?