使用 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
我正在使用此查询查询 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