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