Oracle
 sql >> Base de données >  >> RDS >> Oracle

NOT IN requête... résultats impairs

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

Pour ce que je comprends, votre cudsubq.new_user_id peut être NULL même si les deux tables sont jointes par user_id , donc, vous n'obtiendrez pas de résultats en utilisant le NOT IN opérateur lorsque le sous-ensemble contient NULL valeurs . Prenons l'exemple de l'article :

select * from dual where dummy not in ( NULL )

Cela ne renvoie aucun enregistrement. Essayez d'utiliser le NOT EXISTS opérateur ou simplement un autre type de jointure. Voici une bonne source :http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

Et ce dont vous avez besoin est le quatrième exemple :

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