Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

Выдача результатов в том же порядке что и в IN() [дубликат]

На данный вопрос уже ответили: MySQL: сортировка выборки в порядке, заданном в операторе IN 1 ответ Есть такой запрос:
$translit = $DB->select("SELECT * FROM 'p_CatalogItem' WHERE 'ID' IN (17,19,20,18)");
Но MySQL строки с результатами возвращает совсем в другом порядке:
17,18,19,20
т.е. просто по возрастанию. А мне нужно, чтобы было ровно так же, как в запросе. Это возможно?
Или если запрос выглядит вот так:
$translit = $DB->select("SELECT * FROM p_CatalogItem WHERE ID IN (?a)", $dopColors);
т.е. вместо конкретных цифр переменная, которая эти цифры и содержит.


Ответ

Надо сделать так.
С помощью ORDER BY.
ORDER BY field(field name, array)
$translit = $DB->select("SELECT * FROM 'p_CatalogItem' WHERE 'ID' IN (17,19,20,18)" ORDER BY field(ID, 17,19,20,18));
Вот вариант с переменной. Так выглядит запрос.
$translit = $DB->select("SELECT * FROM p_CatalogItem WHERE ID IN (?a) ORDER BY field(ID, ?a)", $dopColors);

Комментариев нет:

Отправить комментарий