Oracle
 sql >> Datenbank >  >> RDS >> Oracle

NICHT IN Abfrage... ungerade Ergebnisse

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