按ID选择时如何保存项目的顺序?

Kat*_*ate 1 sql t-sql sql-server sql-server-2005

我有一些id的查询,比如ids={1000,50,300,40} 我想从db表中选择一些具有id的项目,并且我希望将项目序列保存到id的序列中.我的意思是,我使用选择陈述:

SELECT * 
  FROM items 
 WHERE id IN (1000,50,300,40)
Run Code Online (Sandbox Code Playgroud)

我希望得到结果

id      name
-------------
1000   item1
50     item2
300    item3
40     item4
Run Code Online (Sandbox Code Playgroud)

但SQL返回结果为

id      name 
-------------
40     item4 
50     item2 
300    item3 
1000   item1
Run Code Online (Sandbox Code Playgroud)

保存ID的顺序非常重要.有谁能够帮我?

OMG*_*ies 5

假设SQL Server 2000+,请使用CASE表达式:

  SELECT i.* 
    FROM ITEMS i
   WHERE i.id IN (1000,50,300,40)
ORDER BY CASE i.id
           WHEN 1000 THEN 1
           WHEN 50 THEN 2
           WHEN 300 THEN 3
           WHEN 40 THEN 4
           ELSE 5
         END 
Run Code Online (Sandbox Code Playgroud)