Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

NOT IN query... resultados ímpares


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

Pelo que entendi, seu cudsubq.new_user_id pode ser NULL mesmo que ambas as tabelas sejam unidas por user_id , portanto, você não obterá resultados usando o NOT IN operador quando o subconjunto contém NULL valores . Veja o exemplo do artigo:
select * from dual where dummy not in ( NULL )

Isso não retorna nenhum registro. Tente usar o NOT EXISTS operador ou apenas outro tipo de junção. Aqui está uma boa fonte:http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

E o que você precisa é do quarto exemplo:
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