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

Jaký je rozdíl mezi „není v“ a „neexistuje“?

Rozdíl mezi NOT IN a NEEXISTUJE bude jasné, kde jsou NULL hodnoty zahrnuté ve výsledku.

Například:

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);

Poznámka :Jejich hlavní rozdíl je v tom, že test_b obsahuje null hodnotu.

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

Nebyly vráceny žádné řádky

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

Vrátí

col1
====
d
e


  1. Mysql Inner Join and Group Opakováním řádku

  2. Přidání nového sloupce SQL s výchozí hodnotou

  3. 4 způsoby, jak vybrat duplicitní řádky v MariaDB

  4. Správný způsob uložení data MySQL po roce 2037