sql >> Databáze >  >> RDS >> Oracle

NENÍ V dotazu... liché výsledky

Přečtěte si toto:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684

Pokud tomu rozumím, vaše cudsubq.new_user_id může být NULL i když jsou obě tabulky spojeny user_id , takže nezískáte výsledky pomocí NOT IN operátor, když podmnožina obsahuje NULL hodnoty . Zvažte příklad v článku:

select * from dual where dummy not in ( NULL )

To nevrací žádné záznamy. Zkuste použít NOT EXISTS operátor nebo jen jiný druh spojení. Zde je dobrý zdroj:http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

A co potřebujete, je čtvrtý příklad:

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


  1. Rekurzivní dotaz v PostgreSQL. VYBRAT *

  2. SQL Reference pro začátečníky

  3. Připojení JDBC – Class.forName vs Class.forName().newInstance?

  4. Importujte 'xml' do SQL Serveru