Lesen Sie dies:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684
Soweit ich weiß, Ihre cudsubq.new_user_id
kann NULL
sein obwohl beide Tabellen durch user_id
verbunden sind , Sie erhalten also keine Ergebnisse mit NOT IN
-Operator, wenn die Teilmenge NULL
enthält Werte . Betrachten Sie das Beispiel im Artikel:
select * from dual where dummy not in ( NULL )
Dies gibt keine Datensätze zurück. Versuchen Sie es mit NOT EXISTS
Operator oder nur eine andere Art von Join. Hier ist eine gute Quelle:http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
Und was Sie brauchen, ist das vierte Beispiel:
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