2014-09-04 66 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