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


How to order rows in MySQL when using in

我正在使用此查询来选择MySQL中的行

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