我有
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 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)