2014-09-04 78 views
1

我有這種形式的查詢:包括在MySQL重複結果導致

$query = "SELECT `id`, `value` FROM `table` 
WHERE `id` IN "."('".$mod."') ORDER BY FIELD (`id`,'".$mod."')"; 

$ MOD是被改造成一個字符串這樣的值的數組:

$mod = implode("','", $mod); 

中的值$ mod是簡單的非負整數,但它們有時會重複...我需要查詢返回包含所有行的結果,包括重複的順序,即

$ mod包含以下一組ID {35,21, 3 4,14,35,21}查詢應返回以下行:

$result id  value 
row1  35  "value35" 
row2  21  "value21" 
row3  34  "value34" 
row4  14  "value14" 
row5  35  "value35" 
row6  21  "value21" 

回答

2

您需要一個包含您的ID集的臨時表。爲訂單使用增量主鍵。

CREATE TEMPORARY TABLE setofids (setorder int auto_increment primary key, id int); 
INSERT INTO setofids (id) VALUES (35),(21),(34),(14),(35),(21); 

然後加入到你的餐桌:

SELECT table.id, table.value FROM table 
JOIN setofids USING (id) 
ORDER BY setofids.setorder