Shu*_*yay 7 sql t-sql sql-server
我在SQL Server中编写一个简单的查询:
Select
EmpId, EmpName, Sal
from
Emp
where
EmpId in (10,9,5,7,3,8);
Run Code Online (Sandbox Code Playgroud)
我希望以相同的顺序获得输出,即; 10,9,5,7,3,8
实际上,无论我给出什么结果,都会按照给定的顺序显示,而无需按升序或降序排序.
我怎样才能做到这一点?请帮忙.
rab*_*dde 13
没办法原生这样做.尝试:
SELECT EmpId,EmpName,Sal
FROM Emp
WHERE EmpId IN (10,9,5,7,3,8)
ORDER BY CASE EmpId
WHEN 10 THEN 1
WHEN 9 THEN 2
WHEN 5 THEN 3
WHEN 7 THEN 4
WHEN 3 THEN 5
WHEN 8 THEN 6
ELSE 7
END;
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用表变量来传递输入.您必须按所需顺序将记录插入此表变量中.
Declare @empids table(id int identity(1,1),empid int)
insert into @empids values(10),(9),(5),(7),(3),(8)
Select e.EmpId,e.empname,e.sal from Emp e
join @empids t on e.EmpId = t.empid
order by t.id
Run Code Online (Sandbox Code Playgroud)
试试这个.