#mysql #sql #база_данных #mysqli
This question already has an answer here:
MySQL: сортировка выборки в порядке, заданном в операторе IN
(1 ответ)
Closed 3 года назад.
Делаю запрос к базе на выборку товаров по id, причем id следуют в определенном порядке.
Например, часть запроса FROM oc_product p WHERE p.product_id IN ('574','572','573').
В ответ получаю отсортированный массив.
Мне надо получить массив с таким же порядком id, как и в запросе. Обработку на php
полученного массива уже реализовал. Интересует можно ли сохранить порядок следования
id именно запросом sql.
Ответы
Ответ 1
Можно воспользоваться функцией FIELD(), передав ей точно такую же последовательность, которую вы задаете в IN. Функция будет возвращать индекс значения в последовательности и по нему можно отсортировать выборку конструкцией ORDER BY. SELECT * FROM oc_product p WHERE p.product_id IN ('574','572','573') ORDER BY FIELD(p.product_id, '574','572','573')
Комментариев нет:
Отправить комментарий