sql - 按 IN 子句的顺序选择记录

标签 sql tsql

我有

SELECT * FROM Table1 WHERE Col1 IN(4,2,6)

我想选择并返回我在 IN 子句中指示的指定顺序的记录
(第一个显示记录,Col1=4,Col1=2,...)

我可以用
SELECT * FROM Table1 WHERE Col1 = 4
UNION ALL
SELECT * FROM Table1 WHERE Col1 = 6 , .....

但我不想使用它,因为我想将它用作存储过程而不是自动生成。

最佳答案

我知道这有点晚了,但最好的方法是

SELECT *
FROM   Table1
WHERE  Col1 IN( 4, 2, 6 )
ORDER  BY CHARINDEX(CAST(Col1 AS VARCHAR), '4,2,67')

或者
SELECT CHARINDEX(CAST(Col1 AS VARCHAR), '4,2,67')s_order,
       *
FROM   Table1
WHERE  Col1 IN( 4, 2, 6 )
ORDER  BY s_order

关于sql - 按 IN 子句的顺序选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3306651/

相关文章:

javascript - 从 javascript 访问 Amazon RDS

sql - 计算Postgresql中的日期差异

sql-server - XML 查询附加适当的 ID

sql - 如何列出 SQL Server 表的主键?

regex - T-SQL LIKE 正则表达式

sql - 我可以添加没有 DEFAULT 值的非空列吗

c# - 检查 BIT 列时从 LINQ 生成的奇怪 SQL

Sql服务器CTE获取父级的子级,然后用父级值更新子级

MySQL获取不同记录中两个最小日期之间的差异

tsql - 当行依赖于外键值时如何使用 BULK INSERT?