Oracle
 sql >> Baza danych >  >> RDS >> Oracle

NOT IN zapytanie... dziwne wyniki

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

Z tego, co rozumiem, twój cudsubq.new_user_id może być NULL mimo że obie tabele są połączone przez user_id , więc nie uzyskasz wyników przy użyciu NOT IN operator, gdy podzbiór zawiera NULL wartości . Rozważ przykład w artykule:

select * from dual where dummy not in ( NULL )

To nie zwraca żadnych rekordów. Spróbuj użyć NOT EXISTS operator lub po prostu inny rodzaj sprzężenia. Oto dobre źródło:http ://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

Potrzebujesz czwartego przykładu:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Opis przypadku Oracle z poradami i przykładami

  2. Hibernate nie generuje identyfikatora podczas korzystania z sekwencji Oracle

  3. Zapytanie SQL FIFO z grupowaniem według

  4. Oracle SQL — REGEXP_LIKE zawiera znaki inne niż a-z lub A-Z

  5. Metaprogramowanie wyrocznia sql select — instrukcja