Oracle
 sql >> Database >  >> RDS >> Oracle

NOT IN query... risultati dispari

Leggi questo:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684

Per quello che ho capito, il tuo cudsubq.new_user_id può essere NULL anche se entrambe le tabelle sono unite da user_id , quindi non otterrai risultati utilizzando NOT IN operatore quando il sottoinsieme contiene NULL valori . Considera l'esempio nell'articolo:

select * from dual where dummy not in ( NULL )

Questo non restituisce alcun record. Prova a usare NOT EXISTS operatore o semplicemente un altro tipo di join. Ecco una buona fonte:http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

E quello che ti serve è il quarto esempio:

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