一尘不染

SQL-按列表顺序排序

sql

我有以下查询,该查询基于逗号分隔的列表返回行

Select * from Table where RecordID in (22,15,105,1,65,32)

我希望此查询的结果以ID在列表中的顺序返回。SQL可以做到吗?

提前致谢


阅读 126

收藏
2021-05-05

共1个答案

一尘不染

如果您需要输出以特定顺序显示,则需要使用服务器可以排序的内容来指定该顺序。不知道您要使用哪个引擎,一般的方案是创建一个临时表或使用行集构造函数将每个记录ID与所需的排序顺序配对。

例如(SQL Server)

declare @T table (RecordID int,Position int)
insert into @T (RecordID,Position)
select 22,1 union all
select 15,2 union all
select 105,3 union all
select 1,4 union all
select 65,5 union all
select 32,6

select * from Table t inner join @T t2 on t.RecordID = t2.RecordID order by t2.Position
2021-05-05