小编典典

基于WHERE IN子句数据的订单结果集

sql

考虑以下MySQL查询:

SELECT
  someColumns
FROM
  someTable
WHERE
  someColumn IN ( value1, value2, value3 )

…如何保证行集按照提供给IN ()子句的值的确切顺序排好序?我猜想如果不给它一个ORDER BY子句就无法保证,对吗?

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

->where( 'someColumn in (?)', $theArrayWithValues );

阅读 163

收藏
2021-04-22

共1个答案

小编典典

在ORDER BY中使用CASE语句:

ORDER BY CASE someColumn
           WHEN value1 THEN 1
           WHEN value2 THEN 2
           WHEN value3 THEN 3
         END ASC

根据需要分配任意值。我通常不包括在内ASCORDER BY因为如果未定义则暗含它,但我想明确表示,以备DESC不时之需。

2021-04-22