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

Jaka jest różnica między „nie w” a „nie istnieje”?

Różnica między NIE W i NIE ISTNIEJE staje się jasne, gdzie są NULL wartości zawarte w wyniku.

Na przykład:

create table test_a (col1 varchar2(30 char));
create table test_b (col1 varchar2(30 char));

insert into test_a (col1) values ('a');
insert into test_a (col1) values ('b');
insert into test_a (col1) values ('c');
insert into test_a (col1) values ('d');
insert into test_a (col1) values ('e');

insert into test_b (col1) values ('a');
insert into test_b (col1) values ('b');
insert into test_b (col1) values ('c');
insert into test_b (col1) values (null);

Uwaga :Kluczową różnicą jest to, że test_b zawiera null wartość.

select * from test_a where col1 not in (select col1 from test_b);

Nie zwrócono żadnych wierszy

select * from test_a where 
    not exists
        (select 1 from test_b where test_b.col1 = test_a.col1);

Zwroty

col1
====
d
e


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj datę z jednego formatu na inny za pomocą pliku kontrolnego SQL*Loader

  2. Procedura Oracle Run z jednym parametrem wejściowym i wieloma parametrami wyjściowymi

  3. Jak ustawić właściwości połączenia (w tym synonimy)

  4. Jak wyodrębnić grupę z wyrażenia regularnego w Oracle?

  5. Wymuś rozróżnianie wielkości liter w identyfikatorze w Oracle