2011-11-24 86 views
-1

可能重複:
Ordering by the order of values in a SQL IN() clauseMySQL會以IN子句中爲了fetchin

我知道我們可以通過使用數組作爲

$ids=array(14,23,2,41,33) 

select * from table_name where id IN ($ids); 
獲取在PHP MySQL的所有行

現在的問題是,我想要按元素的順序提取行,例如

第一行id 14應取自行,然後23,然後2 ..目前提取數據的順序是 - > id爲2的第一行,然後是14,然後是23 ....

和我「無法」運行一個循環,導致數組大約200個元素長,無法查詢與200在同一實例的服務器。有任何想法嗎..?

+1

http://forums.mysql.com/read.php?97,210905,210918#msg-210918看看這對你的作品 – Vikk

+0

感謝..不錯的想法.. .. BDW了另一種方法。 FIND_IN_SET ..很棒.. !! –

回答

0
$ids = array(14,23,2,41,33); 
$sql = 'SELECT * 
      FROM table_name 
     WHERE id IN (' . implode(',', $ids) . ') 
     ORDER BY FIELD(id, ' . implode(', ', $ids) . ')'; 
+0

謝謝..!有用..!正如我在評論find-in_set作品太...中提到,但現在有麻煩putin它在cakePHP .. :( –