1

我目前有这个mysql语句:

SELECT * FROM tablename
 WHERE column1 = 'yes'
 ORDER BY
       CASE column2 WHEN 'premium' THEN 1
                    WHEN 'basic' THEN 2
                    ELSE 999
       END,
       customer_id ASC

我想在组合中添加另一列......所以这就是我最终想做的事情。

ORDER BY:
column2 = premium
THEN
column2 = basic
THEN
column3 = specialcustomer
THEN
display remaining results according to customer_id ASC

所以输出,按照我希望它出现的顺序。

John Doe - 高级,Sally Jones - 高级,Jim Smith - 基本 - 特殊客户,Don Johnson - 基本 - 非特殊客户,Mary Lee - 基本 - 非特殊客户

4

1 回答 1

1
SELECT * FROM tablename
 WHERE column1 = 'yes'
 ORDER BY
       CASE column2 WHEN 'premium' THEN 1
                    WHEN 'basic' THEN 2
                    ELSE 999
       END,
       IF(column3 = 'specialcustomer', 1, 2),
       customer_id ASC

column3 = 'specialcustomer'是特殊客户时应退回的支票true

本节中发生的事情order by是,您可以将其想象为 3 个额外的虚拟列,它们从这些表达式中获取各自的值:1) case ...2) if ...3)customer_id

然后数据行按这些列值按顺序排序。

于 2011-08-03T22:53:01.603 回答