みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複雑な並び替え処理

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の場合のみ登録日ではなく更新日順に並び替えた状態で
取得を行いたいです。良い方法はありませんか?

投稿日時 - 2011-11-29 16:52:15

QNo.7161446

すぐに回答ほしいです

質問者が選んだベストアンサー

ん~・・・こんな感じ?

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

投稿日時 - 2011-11-29 17:10:45

お礼

出来ました!

シンプルでわかりやすいです。
ありがとうございます!

投稿日時 - 2011-11-29 17:54:55

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

「登録日」を「case status when 'status1' then 更新日 else 登録日 end」とすれば出来ます。

投稿日時 - 2011-11-29 17:09:28

お礼

ご回答ありがとうございます。
私がどこか見落としているのか、うまくいきませんでした。

投稿日時 - 2011-11-29 17:52:46

あなたにオススメの質問