sql >> Databasteknik >  >> RDS >> Oracle

Vad är skillnaden mellan "inte med" och "finns inte"?

Skillnaden mellan NOT IN och FINNS INTE blir tydligt var det finns NULL värden som ingår i resultatet.

Till exempel:

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

Obs :Den viktigaste skillnaden är att test_b innehåller en null värde.

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

Inga rader returnerade

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

Retur

col1
====
d
e


  1. hur infogar man automatiskt referenser för främmande nyckel i tabeller i mysql eller JDBC?

  2. Ställa in ett anpassat alternativ i en lagrad procedur

  3. Är detta ett rimligt användningsfall för att lagra JSON i MySQL?

  4. SSIS och skicka förfrågan med datum till Oracle