考虑这个 MySQL 查询:
SELECT
someColumns
FROM
someTable
WHERE
someColumn IN ( value1, value2, value3 )
...我如何保证行集按照 IN ()
子句的值的准确顺序排列出来?我认为如果不给它一个 ORDER BY
子句就不能保证这一点,是吗?
附言:
IN ()
子句的值将是由 PHP(利用 Zend Framework 的 select 语句)按以下方式传递给查询的任意数据数组:
->where( 'someColumn in (?)', $theArrayWithValues );
最佳答案
在 ORDER BY 中使用 CASE 语句:
ORDER BY CASE someColumn
WHEN value1 THEN 1
WHEN value2 THEN 2
WHEN value3 THEN 3
END ASC
根据需要分配任意值。我通常不在 ORDER BY
中包含 ASC
因为如果没有定义它是隐含的,但我想在你想要在 DESC
订单。
关于sql - 基于 WHERE IN 子句数据排序结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245936/