MySQL упорядочение в Select .. В заявлении - PullRequest
3 голосов
/ 18 марта 2011

В MySQL у меня SQL похож на

select id from user where id IN (2, 3, 1);

Но MySQL возвращает строку как 1, 2, 3, возможно ли заставить MySQL вернуть такой же порядок, как мой исходный заказ 2, 3, 1?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 18 марта 2011

Вы можете использовать функцию FIELD:

select id from user where id IN (2, 3, 1) ORDER BY FIELD(id, 2, 3, 1);
1 голос
/ 19 марта 2011

Для переносимого кода используйте CASE/WHEN. Поддерживается всеми (основными) базами данных.

order 
   by case when id = 2 then 1
           when id = 3 then 2
           when id = 1 then 3
       end
0 голосов
/ 18 марта 2011

Вы также можете заказать по месту нахождения, как это:

SELECT
    `id`
FROM
    `user`
WHERE
    `id` IN(2, 3, 1)
ORDER BY
    LOCATE(`id`, "2 3 1")

Феликс

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