sql >> Base de Datos >  >> RDS >> Oracle

NO EN consulta... resultados impares

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

Por lo que entiendo, su cudsubq.new_user_id puede ser NULL aunque ambas tablas están unidas por user_id , entonces, no obtendrá resultados usando NOT IN operador cuando el subconjunto contiene NULL valores . Considere el ejemplo en el artículo:

select * from dual where dummy not in ( NULL )

Esto no devuelve registros. Intenta usar NOT EXISTS operador o simplemente otro tipo de unión. Aquí hay una buena fuente:http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

Y lo que necesitas es el cuarto ejemplo:

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