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'truespecialcustomer の場合に返されるはずの小切手です。

このセクションで行われてorder byいることは、これらの式からそれぞれの値を取得する 3 つの追加の仮想列のように想像できるということです: 1) case ...2) if ...3)customer_id

次に、データの行がこれらの列の値で順番に並べ替えられます。

于 2011-08-03T22:53:01.603 に答える