2010-03-25 69 views
4

我有一個用逗號分隔的id列表,我想用它從數據庫中檢索記錄。我可以使用IN語句來獲得結果,但我希望結果的順序與原始列表的順序相同。SQL IN聲明和排序結果

EG

$list = "3,1,4,2,5"; 
$query = "SELECT * FROM table WHERE id IN (" . $list . ")"; 
$result = @mysql_query($query); 
while($row=mysql_fetch_array($result)){ 
echo($row['id']. ", "); // returns 1, 2, 3, 4, 5 
} 

行,所以我得到的結果回來的順序,它們出現在數據庫 - 不夠公平,但我想要的結果是在相同的順序最初的名單,我想SQL檢索3第一,然後1等...

是否有一個SQL命令來做到這一點,或者我只是需要安排結果的方式,我需要通過一些數組洗牌?做這個的最好方式是什麼?

感謝

+0

http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in-a-sql-in-clause – webbiedave 2010-03-25 14:50:21

回答

9
$query = "SELECT * FROM table WHERE id IN (" . $list . ") ORDER BY FIND_IN_SET(id, '".$list."')"; 
+0

這是它...非常感謝! – undefined 2010-03-25 14:54:09