これを読んでください: http: //asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684
私が理解していることですが、あなたのcudsubq.new_user_id
NULL
にすることができます 両方のテーブルがuser_id
によって結合されている場合でも 、したがって、 NOT IN
を使用しても結果は得られません サブセットにNULL
が含まれている場合の演算子 値 。記事の例を考えてみましょう:
select * from dual where dummy not in ( NULL )
これはレコードを返しません。 NOT EXISTS
を使用してみてください 演算子または別の種類の結合。ここに良い情報源があります: http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
そして、必要なのは4番目の例です:
SELECT COUNT(descr.user_id)
FROM
user_profile prof
LEFT OUTER JOIN user_desc descr
ON prof.user_id = descr.user_id
WHERE descr.new_user_id IS NULL
OR descr.new_user_id != prof.user_id