考虑以下MySQL查询:
SELECT someColumns FROM someTable WHERE someColumn IN ( value1, value2, value3 )
…如何保证行集按照提供给IN ()子句的值的确切顺序排好序?我猜想如果不给它一个ORDER BY子句就无法保证,对吗?
IN ()
ORDER BY
PS .: 子句 的值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
根据需要分配任意值。我通常不包括在内ASC,ORDER BY因为如果未定义则暗含它,但我想明确表示,以备DESC不时之需。
ASC
DESC