在MySQL中,我有像
这样的SQLselect id from user where id IN (2, 3, 1);
但MySQL将行返回为1,2,3,是否有可能强制MySQL返回与原始订单2,3,1相同的顺序?
感谢。
答案 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")
菲利克斯