我需要一个SELECT带有IN子句的查询,以及Order by:
select *
from table
where column_id IN (5,64,2,8,7,1)
Run Code Online (Sandbox Code Playgroud)
此代码返回1, 2, 5, 7, 8, 64.
现在我需要按顺序返回相同的选择
输出需要是: 5, 64, 2, 8, 7, 1
在Mysql中,有字段选项,但SQL Server没有这样的字段选项.
使用您要在a中搜索的值Table Valued Constructor并提供行号,然后将其与表连接,然后根据表值构造函数中的值对其进行排序.
询问
SELECT t1.*
FROM(VALUES(1, 5), (2, 64), (3, 2), (4, 8), (5, 7), (6, 1)) t2([rn], [id])
JOIN [your_table_name] t1
ON t1.[id] = t2.[id]
ORDER BY t2.[rn];
Run Code Online (Sandbox Code Playgroud)
您还可以使用要搜索的值创建表变量,并在其中创建标识列.然后加入你的桌子吧.
询问
DECLARE @tbl AS TABLE([rn] INT IDENTITY(1, 1), [id] INT);
INSERT INTO @tbl([id]) VALUES(5), (64), (2), (8), (7), (1);
SELECT t1.*
FROM [your_table_name] t1
JOIN @tbl t2
ON t1.[id] = t2.[id]
ORDER BY t2.[rn];
Run Code Online (Sandbox Code Playgroud)
在 SQL-Server 中,当您想要按某项排序时,您必须专门拼写出来。
尝试这个
select * from table where column_id IN (5,64,2,8,7,1)
order by
case column_id
when 5 then 1
when 64 then 2
when 2 then 3
when 8 then 4
when 7 then 5
when 1 then 6
else 10
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |