2014-03-26 46 views
0

我想按這個SAME順序選擇這些ID的名稱! IDS:1,2,3,20和10以相同的順序查詢一系列ID [MySQL]

比方說,我們有一個MySQL數據庫管理系統這個 「用戶」 表:

http://i.imgur.com/bReb4W2.jpg?1?3755

我嘗試這樣做:

SELECT name FROM users WHERE id IN (1,2,3,20,10); 

期待此: A,b,C,E,d

但以結束: A,b,C,d,E

那麼有什麼辦法通過SQL來實現這一點?在此先感謝..

+0

是它的SQL Server或MySQL或Oracle? –

回答

0

不知道你想達到的目標,但原則上可以order by方程像

SELECT name FROM users ORDER BY 
    id = 1 DESC, 
    id = 2 DESC, 
    id = 3 DESC, 
    id = 20 DESC, 
    id = 10 DESC; 

因爲(id = 1) = true第一行,這是鑄造於1DESC這將成爲第一行,所有其他下面將評估爲0

對於下一行id=1將爲0,但id=2將爲1。由於所有其他行的計算結果爲0,因此這會將id = 2的行放在第二個位置......等等。

0
select name 
    from users 
where id in (1, 2, 3, 20, 10) 
order by case 
      when id = 1 then 1 
      when id = 2 then 2 
      when id = 3 then 3 
      when id = 20 then 4 
      when id = 10 then 5 
      else id 
      end 
0

在MySQL中,你可以使用field()功能:

order by field(id, 1, 2, 3, 20, 10)