Sur*_*rla 5 mysql sql sql-order-by
我使用以下SQL从MySQL数据库中选择记录:
SELECT * FROM cms_product WHERE id IN (3,22,1);
Run Code Online (Sandbox Code Playgroud)
结果顺序等于"ORDER BY id ASC",因此在示例中返回记录1,3,22.如何以IN子句中输入的确切方式对它们进行排序?订购为3,22,1?谢谢.
众多选择 -
首选,是ANSI-92,它可以移植到其他数据库.
SELECT *
FROM cms_product
WHERE id IN (3,22,1)
ORDER BY CASE id
WHEN 3 THEN 1
WHEN 22 THEN 2
WHEN 1 THEN 3
END
Run Code Online (Sandbox Code Playgroud)
SELECT *
FROM cms_product
WHERE id IN (3,22,1)
ORDER BY FIND_IN_SET(id, '3,22,1');
Run Code Online (Sandbox Code Playgroud)
SELECT *
FROM cms_product
WHERE id IN (3,22,1)
ORDER BY FIELD(id, 3, 22, 1);
Run Code Online (Sandbox Code Playgroud)
参考:
小智 6
尝试使用ORDER BY FIELD
,例如:
SELECT * FROM cms_product WHERE id IN (3,22,1) ORDER BY FIELD (id, 3, 22, 1);
Run Code Online (Sandbox Code Playgroud)