登録日と更新日のフィールドがあって、その中で一番新しい日付を一発でセレクトするクエリー(CASE文とMAX)
登録日と更新日のフィールドがあって、その中で一番新しい日付を一発でセレクトするクエリー(CASE文とMAX)
登録日が created で、更新日が modified で、データを新規登録した時にね、
created には insert するけど、modified にはしない。
本当に編集した時だけ modified に入れるようなプログラムになってたとするじゃないですか。
そうするとデータはこんな感じになる訳で。
created | modified ----------------------------+---------------------------- 2009-03-17 10:18:24.792449 | 2009-03-17 10:32:55.900294 2009-03-25 19:32:18.205694 | 2009-03-26 14:44:18.787866 | 2009-03-30 16:56:56.128813 | 2012-06-22 18:26:11.540513 | 2012-06-23 12:18:09.649044 | 2012-06-22 18:26:37.815316 | 2012-06-26 15:07:45.34223 2012-06-21 12:46:03.151537 | 2012-06-26 16:44:05.811683 2012-06-26 19:05:44.473284 | 2012-06-26 20:15:18.196717
modified は NULL になってるデータがある訳です。
こういう状態で、更新があった一番新しい日付をセレクトせよ、ってことなんですが。。。
SELECT MAX(CASE WHEN modified IS NULL THEN created ELSE modified END) AS dates FROM items;
これでこうなる。
dates ---------------------------- 2012-06-26 20:15:18.196717 (1 row)まあ、最初っから両方入れとけよって話ですね。