Есть ли простой способ заказать результаты MySQL соответственно ГДЕ id
В (...) пункте? Пример:
SELECT * FROM articles WHERE articles.id IN (4, 2, 5, 9, 3)
возвратиться
Article with id = 4
Article with id = 2
Article with id = 5
Article with id = 9
Article with id = 3
и также
SELECT * FROM articles WHERE articles.id IN (4, 2, 5, 9, 3) LIMIT 2,2
возвратиться
Article with id = 5
Article with id = 9
Обновление: чтобы быть более конкретным, я не хочу вмешиваться в данные в круглых скобках в WHERE articles.id IN (4, 2, 5, 9, 3)
, так как те идентификаторы являются динамичными и автоматически заказаны.
Да, вроде того:
SELECT * FROM articles
WHERE articles.id IN (4, 2, 5, 9, 3)
ORDER BY FIND_IN_SET(articles.id, '4,2,5,9,3')
но это нестандартный SQL и немного попахивает.
Я не думаю, что вы сможете это сделать. Нет никакого «явного» упорядочивания; оператор "in" просто говорит вам, что нужно получить, и не содержит информации о порядке.
Поскольку приведенные вами примеры не имеют очевидного порядка, лучше всего обработать это в коде после того, как будет возвращен результат.
MySQL выполняет сортировку только с ORDER BY. Вот почему таблицы базы данных нередко имеют что-то вроде столбца порядкового номера.
articles
+----+------------+-------+
| id | ordinality | (...) |
+----+------------+-------+
| 2 | 2 | '' |
| 3 | 5 | '' |
| 4 | 1 | '' |
| 5 | 3 | '' |
| 9 | 4 | '' |
+----+------------+-------+
SELECT *
FROM articles
WHERE articles.id IN (4, 2, 5, 9, 3)
ORDER BY articles.ordinality