• ベストアンサー

ORDER BYでカラムの値があれば指定したい

<前提> ・created_at 登録日時カラム … 必ず値がある ・modified 更新日時カラム … nullの場合もある この時、更新日時カラムの値があれば、更新日時カラムを選択、 更新日時カラムがnullなら、登録日時カラムを選択した状態で、 降順表示させたいのですが、どうすれば良いでしょうか? やりたいのは、こんな感じです ORDER BY 更新日時カラムの値があれば、modified 更新日時カラムがnullなら、created_at DESC

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

  • ベストアンサー
  • hogya
  • ベストアンサー率67% (49/73)
回答No.1

つまり、更新日時カラムではnullが一番大きいとみなすということなので、下記の順番でソートすればよいかと思います。 ORDER BY modified IS NULL DESC, modified DESC, created_at DESC 蛇足ですが、設計的にはトリッキーなSQLを書かないで済むようにやはり登録時には更新日時カラムにも登録日時カラムと同じ値を入れておくのが王道だと思います。

re999
質問者

お礼

回答ありがとうございました。 また、アドバイスありがとうございました。 >蛇足ですが、設計的にはトリッキーなSQLを書かないで済むようにやはり登録時には更新日時カラムにも登録日時カラムと同じ値を入れておくのが王道だと思います 王道自体がどういうのか知らなかったため、大変参考になりましたー

関連するQ&A