実現したいこと
EXISTS述語とNOT IN を用いたクエリの結果が異なり、原因を把握したいです
前提
下記の2つの記述では結果が同じになると思ったのですが、件数が若干異なっております。
table2でのidは一意であり、NULLのレコードは存在しないので、NOT INを用いた記述でも問題ない認識でした。
①EXISTS述語
SELECT
*
FROM table1 t1
WHERE created_at >= yyyymmdd
AND is_delivered=1
AND NOT EXISTS
(
SELECT
*
FROM table2 t2
WHERE deleted_at IS NULL
AND status = 2
AND t1.job_id = t2.id
)
②NOT IN
SELECT
*
FROM table1
WHERE created_at >= yyyymmdd
AND is_delivered = 1
AND job_id NOT IN
(
SELECT
id
FROM table2
WHERE deleted_at IS NULL
AND status = 2
)
当方、市販されている書籍は一通り学習したのですが、上記について分からず、
ご存知の方いらっしゃいましたら宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー