老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Oracleexists/in和notexists/no-創新互聯

之前寫過一篇關于NULL對in和not in結果的影響:Oracle的where條件in/not in中包含NULL時的處理。今天來看看exists和not exists中NULL值對結果的影響。

創新互聯專注于新華企業網站建設,響應式網站建設,商城網站開發。新華網站建設公司,為新華等地區提供建站服務。全流程按需開發網站,專業設計,全程項目跟蹤,創新互聯專業和態度為您提供的服務

網上經常看到關于in和exixts、not in和not exists性能比對和互換的例子,但它們真的就可以簡單互換么?我們通過下面的實驗來看一下。

實驗環境:Oracle 11.2.0.4

1、創建表并插入測試數據

create table t1 (id number);
create table t2 (id number);
insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);
insert into t1 values(4);
insert into t1 values(null);
commit;
insert into t2 values(3);
insert into t2 values(4);
insert into t2 values(5);
insert into t2 values(6);
commit;
zx@ORA11G>select * from t1;

	ID
----------
	 1
	 2
	 3
	 4


5 rows selected.

zx@ORA11G>select * from t2;

	ID
----------
	 3
	 4
	 5
	 6

4 rows selected.

第一種情況:exists/in的查詢中不包含NULL,外層查詢包含NULL

zx@ORA11G>select * from t1 where exists(select 1 from t2 where t1.id=t2.id);

	ID
----------
	 3
	 4

2 rows selected.

zx@ORA11G>select * from t1 where id in (select id from t2);

	ID
----------
	 3
	 4

2 rows selected.

從上面的查詢結果看出exists和in都查到了id=2和3的兩條數據。

第二種情況:not exists/not in的查詢中不包含NULL,外層查詢包含NULL

zx@ORA11G>select * from t1 where not exists(select 1 from t2 where t1.id=t2.id);

	ID
----------

	 1
	 2

3 rows selected.

zx@ORA11G>select * from t1 where id not in (select id from t2);

	ID
----------
	 1
	 2

2 rows selected.

從上面的結果中可以看到兩個查詢都查到了id=1和2這兩條記錄,但not exists還查到了t1表中id為NULL的行。原因是表t1中id為NULL的行exists(3,4,5,6)為False,但前面加了個not則返回結果就為True了。

第三種情況:exists/in的子查詢中包含NULL,外層查詢包含NULL

zx@ORA11G>insert into t2 values(null);

1 row created.

zx@ORA11G>commit;

Commit complete.

zx@ORA11G>select * from t1 where id in (select id from t2);

	ID
----------
	 3
	 4

2 rows selected.

zx@ORA11G>select * from t1 where exists(select 1 from t2 where t1.id=t2.id);

	ID
----------
	 3
	 4

2 rows selected.

從上面的結果中可以看出exist和in的結果是一致的。

第四種情況:not exists和not in的查詢中包含NULL

zx@ORA11G>select * from t1 where not exists(select 1 from t2 where t1.id=t2.id);

	ID
----------

	 1
	 2

3 rows selected.

zx@ORA11G>select * from t1 where id not in (select id from t2);

no rows selected

從上面的查詢結果中可以看出兩個結果差異很大,not exists把id=1和2和為NULL的值都查出來了,而not in查出來的結果為空。no in結果為空的原因可以參考之前的文章,not exists的原因與第二種情況類似。

第五種情況:not in/not exists的子查詢中無NULL值,外層查詢也無NULL值

zx@ORA11G>delete from t1 where id is null;

1 row deleted.

zx@ORA11G>delete from t2 where id is null;

1 row deleted.

zx@ORA11G>commit;

Commit complete.

zx@ORA11G>select * from t1 where id not in (select id from t2);

	ID
----------
	 1
	 2

2 rows selected.

zx@ORA11G>select * from t1 where not exists(select 1 from t2 where t1.id=t2.id);

	ID
----------
	 1
	 2

2 rows selected.

第六種情況:in/exists的子查詢中無NULL值,外層查詢也無NULL值

zx@ORA11G>select * from t1 where id in (select id from t2);

	ID
----------
	 3
	 4

2 rows selected.

zx@ORA11G>select * from t1 where exists(select 1 from t2 where t1.id=t2.id);

	ID
----------
	 3
	 4

2 rows selected.

第七種情況:in/exists的子查詢中有NULL值,外層查詢無NULL值

zx@ORA11G>insert into t2 values(null);

1 row created.

zx@ORA11G>commit;

Commit complete.

zx@ORA11G>select * from t1 where id in (select id from t2);

	ID
----------
	 3
	 4

2 rows selected.

zx@ORA11G>select * from t1 where exists(select 1 from t2 where t1.id=t2.id);

	ID
----------
	 3
	 4

2 rows selected.

第八種情況:not in/not exists的子查詢中有NULL值,外層查詢無NULL值

zx@ORA11G>select * from t1 where id not in (select id from t2);

no rows selected

zx@ORA11G>select * from t1 where not exists(select 1 from t2 where t1.id=t2.id);

	ID
----------
	 1
	 2

2 rows selected.

從上面的八種情況我們可以總結如下:

    1、in和exists在有無NULL的情況下可以相互轉換。

     2、not in和not exists在都沒有NULL值的情況下才可以相互轉換。

參考:https://mp.weixin.qq.com/s/rHKBFMQrrBf1TiUo6UmEmQ

http://docs.oracle.com/cd/E11882_01/server.112/e41084/conditions013.htm#SQLRF52169

http://docs.oracle.com/cd/E11882_01/server.112/e41084/conditions012.htm#SQLRF52167

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


文章題目:Oracleexists/in和notexists/no-創新互聯
標題鏈接:http://www.xueling.net.cn/article/jiige.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲热视频在线观看 | 中文字幕中文字幕中文字幕亚洲无线 | 伊人福利视频 | 男人捅女人免费视频 | 男人操女人视频免费观看 | 亚洲精品成人久久AV | 天天摸天天做天天爽 | 给我免费播放片在线中国 | 肉体裸交137日本大胆摄影 | 榴莲导航深夜福利 | 爱爱网站免费 | 亚洲精品成人悠悠色影视 | 男人搡女人搡到高潮视频 | 一区二区三区观看视频 | av无码一区二区三 | 日本黄色播放 | 欧美国产激情 | 国产成人久久精品二区三区牛 | 亚洲VA中文字幕无码毛片 | gogogo高清在线观看中文版二 | 色综合久久久久综合一本到桃花网 | 练舞蹈被教练做高h | 99久E在线精品视频在线 | 一区二区三区国产片 | 亚洲AV无码一区二区三区系列 | 成人一区二区三区视频在线观看 | 久久综合久久久久 | 男人进去女人爽免费视频 | 亚洲第一区视频 | 欧美一级特级 | 天天干天天操天天插 | 久久国产小视频 | 6699嫩草久久久精品影院 | 日韩午夜大片 | 看全色黄大色黄大片大学生 | 三年片在线观看免费观看大全麻豆 | 96sao精品视频在线观看 | 粗大的内捧猛烈进出欧美 | 成人久久免费视频 | 日本乱偷中文字幕久久久 | 国产亚洲精品一区在线播放 |