基于WHERE IN子句数据排序结果集

Dec*_*ler 4 mysql sql database sql-order-by

考虑这个MySQL查询:

SELECT
  someColumns
FROM
  someTable
WHERE
  someColumn IN ( value1, value2, value3 )
Run Code Online (Sandbox Code Playgroud)

...我怎样才能保证行集按照赋予该IN ()子句的值的确切顺序排序?我认为如果不给它一个ORDER BY条款就不能保证,是吗?

PS.:子句
的值IN ()将是一个由PHP传递给查询的任意数据数组(利用Zend Framework的select语句),方式如下:

->where( 'someColumn in (?)', $theArrayWithValues );
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 9

在ORDER BY中使用CASE语句:

ORDER BY CASE someColumn
           WHEN value1 THEN 1
           WHEN value2 THEN 2
           WHEN value3 THEN 3
         END ASC
Run Code Online (Sandbox Code Playgroud)

根据需要分配任意值.我通常不包含ASCin,ORDER BY因为如果没有定义它是隐含的,但我希望在你需要的时候是明确的DESC.