6

order by コマンドを含む select ステートメントがあります。現在、order by コマンドには、別の列でソートするレコードのステータスに基づくケース ステートメントがあります。ただし、ステータスが 1 の場合は DESC で、そうでない場合は ASC で注文する必要があります。

これどうやってするの?

これは私の現在の声明です:

SELECT ph.phone_call_id AS id, ph.call_subject AS callSubject,
       ph.trigger_on AS triggerOn,
       ph.isAppointment,
       IFNULL(ph.last_attempt_on, "") last_attempt_on,
       ind.name AS industry,
       ac.account_id,
       ac.account_name AS accountName
       FROM phone_calls AS ph
       INNER JOIN accounts AS ac ON ph.account_id = ac.account_id
       INNER JOIN industries AS ind ON ind.industry_id = ac.industry_id
       INNER JOIN call_codes AS cc ON ph.call_code_id = cc.call_code_id
       WHERE ac.status = 1 
       AND ph.status = '.$call_status.' 
       AND ph.owner_id = '. USER_ID .' 
       AND ac.do_not_call = 0 
       ORDER BY CASE WHEN ph.status = 1 THEN ph.trigger_on ELSE ph.last_attempt_on END
4

1 に答える 1

14

これは、あなたの望むことですか?

ORDER BY (CASE WHEN ph.status = 1 THEN ph.trigger_on  end) DESC,
         (case when ph.status <> 1 then ph.last_attempt_on END) ASC
于 2013-04-19T18:20:57.033 に答える