2013-10-11 25 views
1

我有一個簡單的數組$ ids例如(2,9,4,10,18)。還有我有一個與主鍵相同的ID的mysql表$ table1。 我的問題是:如何選擇我的表中的元素在相同的順序作爲身份證進入我的數組中使用只有一個查詢(我不會調用該數組的每個ID號的查詢,因爲該表是應該有很多條目)。根據自定義數組選擇mysql元素

不過,如果你能給我另一種方式去做,我想知道它。

+0

[使用IN()時MySQL順序的可能重複)(http://stackoverflow.com/questions/19315068/mysql-order-when-using-in) –

回答

1

如果使用字符串,而不是數組,那麼:

<?php 
$arr="2,9,4,10,18"; 
$query = mysql_query("SELECT * FROM tablename WHERE id IN ($arr)"); 
while($row=mysql_fetch_array($query)){ 

//display data here 

} 
?> 
+0

看起來很有意思!我會嘗試一下。 –

+0

工程..但50/50。因爲它只是選擇列表中的所有條目,而不是以自定義順序。當我嘗試「18,2,4,9,10」時,它仍然給我$行「2,9,4,10,18」。 –

+2

我添加了ORDER BY FIELD,它的工作原理!感謝名單! –

0

創建一個包含兩列的臨時表,即id行和位置順序。

然後運行查詢是這樣的:

select t.* from table t 
inner join #temp t2 on t.id = t2.id 
where t.id in (select id from #temp) 
order by t2.position 

您應該爲此創建SP,不能說,如果你能與MySQL

+0

另一個表不是選項,因爲我剛纔說過,那裏有w應該有很多條目+這個功能會被經常使用。我想要一件簡單而快速的東西。 –