SQL中EXCEPT和Not in的區別?

2021-06-21 09:23:51 字數 1710 閱讀 6673

初始化兩張表:

create table tb1(id int)

insert tb1          select null

union  all          select null

union  all          select null

union  all          select 1

union  all          select 2

union  all          select 2

union  all          select 2

union  all          select 3

union  all          select 4

union  all          select 4

create table tb2(id int)

insert tb2        select null

union  all          select 1

union  all          select 3

union  all          select 4

union  all          select 4

a:select * from tb1

select * from tb2

select * from tb1 except select * from tb2;

select * from tb1 where id not in(select id from tb2);--得不到任何值

結果:b、我先刪除表tb1的是null值的行

--delete from tb1 where id is null

b、select * from tb1 except select * from tb2;

select * from tb1 where id not in(select id from tb2);--得不到任何值

結果:同上a

c、把錶tb2的是null值的行也刪除

--delete from tb2 where id is null

c、 select * from tb1 except select * from tb2;

select * from tb1 where id not in(select id from tb2);

結果:這是兩張表中都沒有null值時,得到的結果;

d、在tb1表中插入一條null值

d、select * from tb1 except select * from tb2;

select * from tb1 where id not in(select id from tb2);

結果:以上例子說明:

except會去重複, not in 不會(除非你在select中顯式指定)

except用於比較的列是所有列, 除非寫子查詢限制列, not in 沒有這種情況

表tb2中如果有null值的話,not in查詢得不到值(如:a、b)

表tb1中如果有null值,not in不會查詢出這個null值(如:d),而except可以查詢到

當然通過對子查詢指定不為null的話,not in自然會得到值,如:

select * from tb1 where id not in(select id from tb2 where id is not null);

SQL中EXCEPT和Not in的區別?

except會去重複,not in 不會 除非你在select中顯式指定 except用於比較的列是所有列,除非寫子查詢限制列,not in 沒有這種情況 表tb2中如果有null值的話,not in查詢得不到值 如 a b 表tb1中如果有null值,not in不會查詢出這個null值 如 d ...

SQL中EXCEPT和Not in的區別

初始化兩張表 create table tb1 id int insert tb1 select null union all select null union all select null union all select 1 union all select 2 union all sele...

Python中except用法和作用

python的except用來捕獲所有異常,因為python裡面的每次錯誤都會丟擲 乙個異常,所以每個程式的錯誤都被當作乙個執行時錯誤。以下是使用except的乙個例子 try foo opne file open被錯寫為opne except sys.exit could not open fil...