我正在使用以下SQL从MySQL数据库中选择记录:
SELECT * FROM cms_product WHERE id IN (3,22,1);
结果顺序等于“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
FIND_IN_SET:
SELECT *
FROM cms_product
WHERE id IN (3,22,1)
ORDER BY FIND_IN_SET(id, '3,22,1');
field :
SELECT *
FROM cms_product
WHERE id IN (3,22,1)
ORDER BY FIELD(id, 3, 22, 1);
引用:
关于sql - “WHERE field IN” SQL查询的顺序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4011056/