Læs dette:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684
Så vidt jeg forstår, er dit cudsubq.new_user_id
kan være NULL
selvom begge tabeller er forbundet af user_id
, så du får ikke resultater ved at bruge NOT IN
operator, når undersættet indeholder NULL
værdier . Overvej eksemplet i artiklen:
select * from dual where dummy not in ( NULL )
Dette returnerer ingen optegnelser. Prøv at bruge koden NOT EXISTS
operatør eller bare en anden slags join. Her er en god kilde:http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
Og hvad du har brug for, er det fjerde eksempel:
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