Läs detta:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684
Vad jag förstår är ditt cudsubq.new_user_id
kan vara NULL
även om båda tabellerna är sammanfogade av user_id
, så du får inga resultat med NOT IN
operator när delmängden innehåller NULL
värden . Tänk på exemplet i artikeln:
select * from dual where dummy not in ( NULL )
Detta returnerar inga poster. Prova att använda koden NOT EXISTS
operatör eller bara en annan typ av join. Här är en bra källa:http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
Och vad du behöver är det fjärde exemplet:
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