2010-05-11 37 views
12

使用SELECT WHERE IN()時,有沒有辦法保持順序?例如,使用以下查詢:如何使用SELECT WHERE IN()保持訂單?

SELECT id FROM data_table WHERE id IN(56,55,54,1,7); 

結果將使用id默認順序返回。 1,7,54,55,56

當我想保持在所使用的順序:56,55,54,1,7

是否有一個快速的方式在MySQL或將做到這一點我不得不在代碼中訂購它。

謝謝:)

回答

37

使用FIND_IN_SET

ORDER BY FIND_IN_SET(id, '56,55,54,1,7') 
+0

+1 - 我從來沒有想過這個問題。好主意 – 2010-05-11 19:40:54

+0

謝謝!那很快。它工作完美:) – Pepper 2010-05-11 19:41:24

+0

一個問題,這會導致查詢使用文件。我應該關心使用這種方法的性能嗎?或者這是一個不同線程的問題? – Pepper 2010-05-11 19:44:10

0

你可以做一個UNION,可能返回的順序相同的方式。

但是:

爲什麼不只是當它接收他們,而不是強迫DB做你的應用程序重新排序的結果?

+2

數據庫將比您的應用程序能夠更好地擴展順序。 10條記錄不算什麼 - 如果結果集爲10,000或數百萬個,那該怎麼辦? – 2010-05-11 19:41:26

相關問題