显示没有order by子句的SQL查询的顺序

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)

试试这个.