id | key | ins_dt
1 | aaa | 2016-11-11 09:00:00
2 | aaa | 2016-11-11 09:01:00
3 | bbb | 2016-11-11 09:15:00
4 | ccc | 2016-11-11 11:00:00
5 | ccc | 2016-11-11 11:08:00
SQL
1SELECT id FROM tbl 2WHERE 3 ins_dt < '2016-11-11 11:01:11' 4 AND key NOT IN (SELECT key FROM tbl WHERE ins_dt > '2016-11-11 11:01:11') 5
ユニークキーはid列です。
データの単位はkey列でひとかたまりとした作りになっています。
現在時刻が「2016-11-11 11:11:11」とした時に、10分以上経過しているデータを
取得対象としたいのですが、ひとつ条件があり直近10分以内に
key列の単位でデータが追加されていた場合は取得対象外としたいです。
※ id = 4は11:01:11より古いので取得対象だけど、同じkeyで11:01:11以降のデータが
あるのでkey = ccc のレコードはすべて対象外としたいです。
上記のSQLでIN句の中のSELECT結果が1件以上であれば、想定通りの結果(id 1,2,3が取得できる状態)が
得られたのですが、IN句の中のSELECTで0件の時に何も値を取得できなくなってしまい困っています。
(id=5のレコードが無い場合は、10分以上経過しているデータはあるけど、0件になってしまう)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/19 14:00
2016/11/20 05:22