相关疑难解决方法(0)

选择顺序为IN子句的记录

我有

SELECT * FROM Table1 WHERE Col1 IN(4,2,6)
Run Code Online (Sandbox Code Playgroud)

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

我可以用

SELECT * FROM Table1 WHERE Col1 = 4
UNION ALL
SELECT * FROM Table1 WHERE Col1 = 6 , .....
Run Code Online (Sandbox Code Playgroud)

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

sql t-sql

3
推荐指数
2
解决办法
1万
查看次数

SQL:在"IN"语句中按顺序排序

基础数据:

请注意,这是所有SQL Server.

好的,所以基表看起来像这样(称之为NameTable):

ID    |    Name
___________________
1     |    Randy
2     |    Kenny
3     |    Stan
4     |    Kyle
5     |    Cartman
Run Code Online (Sandbox Code Playgroud)

现在我将运行一个SQL查询:

SELECT * FROM [NameTable] WHERE Name IN ("Kyle", "Stan", "Kenny", "Cartman", "Randy")
Run Code Online (Sandbox Code Playgroud)

目前的结果:

ID    |    Name
___________________
1     |    Randy
2     |    Kenny
3     |    Stan
4     |    Kyle
5     |    Cartman
Run Code Online (Sandbox Code Playgroud)

这是预期的.这很好,但我需要的是按照它们在IN语句中出现的顺序来排序数据.

所以在这种情况下:凯尔,斯坦,肯尼,卡特曼,兰迪.

请特别注意,这不符合标准订单,因为它不一定按字母顺序排列

需要的结果:

 ID    |    Name
___________________
4     |    Kyle
3     |    Stan
2     |    Kenny
5     |    Cartman
1     |    Randy …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

2
推荐指数
1
解决办法
71
查看次数

标签 统计

sql ×2

sql-server ×1

t-sql ×1