MySQL - SELECT ... WHERE ID IN (..) - правильный порядок - PullRequest
27 голосов
/ 23 февраля 2011

У меня есть следующий запрос

SELECT * FROM table WHERE id IN (5,4,3,1,6)

, и я хочу получить элементы в порядке, указанном в «id in ..», что означает, что он должен вернуть:

5 ....
4 ....
3 ....
1 ....
6 ....

Есть идеи как это сделать?

Ответы [ 4 ]

53 голосов
/ 23 февраля 2011

Использование ПОЛЯ () :

SELECT * FROM table WHERE id IN (5,4,3,1,6) ORDER BY FIELD(id, 5,4,3,1,6);
25 голосов
/ 23 февраля 2011
SELECT * FROM table WHERE id IN (5,4,3,1,6) ORDER BY FIELD (id, 5,4,3,1,6)
2 голосов
/ 23 февраля 2011

На случай, если кто-то все еще ищет, я только что нашел его.

SELECT * FROM `table` WHERE `id` IN (4, 3, 1) ORDER BY FIELD(`id`, 4, 3, 1)

И ссылку на функцию вы можете найти ЗДЕСЬ

0 голосов
/ 23 февраля 2011

Что ж, вам нужно будет создать идентификатор для каждого из идентификаторов, так:

id |otherid

1 = 5 2 = 4 3 = 3 4 = 1 6 = 6

с использованием IN STATEMENT только проверяет, есть ли эти значения в списке, не упорядочивает их в каких-либо конкретныхзаказ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...