2015-04-02 2 views
0

У меня есть MySQL запросовЗаказать ряды по IN

SELECT collateral.* 
FROM collateral 
WHERE collateral.id IN (85,565,32,33) 

Есть далеко, что я могу получить результаты запроса для вывода в ORDER BY значения IN, а что ASC, который, как представляется, по умолчанию?

По умолчанию запрос выводит результаты в следующем порядке

row id 
--------- 
1  32 
2  33 
3  85 
4  565 

То, что я хотел бы достичь в заказе на основе порядка значений в значении IN

row id 
--------- 
1  86 
2  565 
3  32 
4  33 

Спасибо

+1

возможно дубликат [Поддержание порядка в MySQL "IN" запрос] (HTTP: //stackoverflow.com/questions/1631723/maintaining-order-in-mysql-in-query) – Saty

ответ

1

Вы можете использовать order by field

WHERE collateral.id IN (85,565,32,33) 
order by field(collateral.id ,85,565,32,33) 
+0

Большое вам спасибо, что сработало удовольствие! +1 :) – onebitrocket

+0

@onebitrocket Я не вижу вашего +1 ... –

0

Для баз данных, не имеющих "поле" (или аналогичный) функционируют ответ

WHERE collateral.id IN (85,565,32,33) 
ORDER BY CASE 
    WHEN collateral.id = 85 THEN 1 
    WHEN collateral.id = 565 THEN 2 
    WHEN collateral.id = 32 THEN 3 
    WHEN collateral.id = 33 THEN 4 
END 

Для MySql использовать @Abhik ответ

Смежные вопросы