在Select .. In语句中排序MySQL

时间:2011-03-18 15:38:00

标签: mysql sql

在MySQL中,我有像

这样的SQL
select id from user where id IN (2, 3, 1);

但MySQL将行返回为1,2,3,是否有可能强制MySQL返回与原始订单2,3,1相同的顺序?

感谢。

3 个答案:

答案 0 :(得分:6)

您可以使用FIELD功能:

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

答案 1 :(得分:1)

对于便携式代码,请使用CASE/WHEN。它受所有(主要)dbms支持。

order 
   by case when id = 2 then 1
           when id = 3 then 2
           when id = 1 then 3
       end

答案 2 :(得分:0)

你也可以通过这样的LOCATE订购:

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

菲利克斯