2014-09-04 2 views
1

У меня есть запрос этой формы:Включить повторяющиеся результаты в MySQL результат

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

$ модник массив значений, который преобразуется в строку, как это:

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

Значения $ mod - простые неотрицательные целые числа, но они иногда повторяются ... Мне нужен запрос, чтобы вернуть результат, который имеет все строки, включая дубликаты, в порядке

, когда $ mod содержит следующий набор идентификаторов {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

Вам нужна временная таблица, содержащая ваш набор идентификаторов. Используйте приращающийся первичный ключ для заказа.

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 
Смежные вопросы