使用 in 时如何对 MySQL 中的行进行排序

How to order rows in MySQL when using in

我正在使用此查询查询 MySQL

中的 select 行
SELECT * FROM `table` WHERE `id` IN (5,2,3,1,4);

现在默认情况下,行将按其 id 排序:1, 2, 3, 4, 5

有什么方法可以让我按查询中的行顺序排序,所以顺序应该是:5, 2, 3, 1, 4 ?

使用MySQL的FIELD()函数

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

您可以使用case语句自定义排序

SELECT *
FROM   table
WHERE  id IN ( 5, 2, 3, 1, 4 )
ORDER  BY CASE id
            WHEN 5 THEN 1
            WHEN 2 THEN 2
            WHEN 3 THEN 3
            WHEN 1 THEN 4
            WHEN 4 THEN 5
            ELSE 6
          END