- ベストアンサー
複雑な並び替え処理
select * from data_table order by case status when 'status1' then 1 when 'status2' then 2 when 'status3' then 2 when 'status4' then 3 else 4 end , 登録日 DESC 上記は、status1>status2,status3>status4の優先順位で登録日順にSQLを取得しています。 このSQL文を改良し、status1の場合のみ登録日ではなく更新日順に並び替えた状態で 取得を行いたいです。良い方法はありませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ん~・・・こんな感じ? select * from data_table order by case status when 'status1' then 1 when 'status2' then 2 when 'status3' then 2 when 'status4' then 3 else 4 end ASC , if(status='status1',`更新日`,`登録日`) DESC
その他の回答 (1)
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
回答No.1
「登録日」を「case status when 'status1' then 更新日 else 登録日 end」とすれば出来ます。
質問者
お礼
ご回答ありがとうございます。 私がどこか見落としているのか、うまくいきませんでした。
お礼
出来ました! シンプルでわかりやすいです。 ありがとうございます!