2010-11-30 91 views
6

我使用了一個mysql查詢,其中有「where id in(」22,20,21「)」 但是當我得到結果時,它的數組按照升序排序,即20,21, 20「where in」mysql clause

,但我需要它以相同的順序,因爲我給了該條款,除非給出明確排序

+0

什麼是完整查詢? – cambraca 2010-11-30 06:11:58

+0

可能重複[如何命令查詢結果與在WHERE條件中指定的id相同?](http://stackoverflow.com/questions/3984531/how-can-i-order-a-query-result-相同的ID在指定的在哪裏條件) – deceze 2010-11-30 06:14:52

+0

我同意@deceze它是重複的。沒有看到你的答案,或者可能會指出他在那個方向。 – 2010-11-30 06:20:09

回答

18

認爲你應該能夠使用該字段關鍵字,像這樣:

SELECT * FROM table 
WHERE id in (22,20,21) 
ORDER BY FIELD(id,22,20,21); 

這是MySQL的具體,似乎不可思議,但它的作品。

2

SQL結果是無序的;該訂單不會從in條款中獲取。

既然ID既不是ASC也不是DESC,你必須ORDER BY別的東西;你如何確定22,20,21的訂單呢?

0

您無法指定訂單結果將返回到WHERE子句中。如果您要指定訂單,則需要爲查詢添加ORDER BY子句。對於使用FIND_IN_SET的解決方案,請參閱this answer

2

如前所述...... WHERE子句對結果集的排序沒有任何作用。使用MySQL built-in FIELD functionORDER BY子句指定結果集應如何下令:

... WHERE id IN (22, 20, 21) ORDER BY FIELD(id, 22, 20, 21) ... 
0

一般來說,數據庫系統返回任何順序感覺的結果。如果你想要訂購它,你必須告訴它。 This blog post提供了這樣做的一種方法;您可以在網上找到其他解決方案。