2013-05-18 1 views
0

Пример моего вопроса следуют:
У меня есть массив идентификаторовВыберите строку для каждого ключа в заявлении IN, даже если они равны

[ 6230, 206, 4259, 24761, 26736, 219, 281, 281, 516, 495, 10371 ] 

И я хочу, чтобы настройки SELECT, запрос к базе данных .table так:

SELECT * FROM `database`.`table` WHERE `id` IN (6230, 206, 4259, 24761, 26736, 219, 281, 281, 516, 495, 10371); 

Как вы можете видеть, у меня есть 2 идентификатора, равные так и в результате этого запроса я буду есть только 10 строк.
Но я хочу получить одну строку для каждого id в массиве. Как я предполагаю, это невозможно с утверждением «IN()».
Могу ли я получить какое-либо предположение о том, как решить эту проблему.
Как раз заметить: Я не могу выполнить различный запрос для каждого элемента массива.

ответ

2

Создать набор с одной записи для каждого идентификатора, и присоединиться на что:

select t.* from database.table as t inner join (
    select 6230 as id union all 
    select 206 union all 
    select 4259 union all 
    select 24761 union all 
    select 26736 union all 
    select 219 union all 
    select 281 union all 
    select 281 union all 
    select 516 union all 
    select 495 union all 
    select 10371 
) as x on x.id = t.id 
+0

Спасибо за помощь. Все работает. –