電子書籍の厳選無料作品が豊富!

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

A 回答 (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
    • good
    • 0
この回答へのお礼

出来ました!

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

お礼日時:2011/11/29 17:54

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2011/11/29 17:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す