国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

公司新來技術(shù)大佬:誰再在 SQL 中寫 in 和 not in,直接走人!

0
分享至

釣友寶 (微信小程序):一款專門為 釣友 開發(fā)的 免費的 分享釣點地圖與實時天氣的軟件,地圖中標記了所有野釣、釣場、公共水域等的精確位置,支持導(dǎo)航、 預(yù)測釣魚位置的魚情 等功能。

IN 和 NOT IN 是比較常用的關(guān)鍵字,為什么要盡量避免呢?

項目中遇到這么個情況:

t1表 和 t2表 都是150w條數(shù)據(jù),600M的樣子,都不算大。

但是這樣一句查詢 ↓

select * from t1 where phone notin (select phone from t2)

直接就把我跑傻了。。。十幾分鐘,檢查了一下 phone在兩個表都建了索引,字段類型也是一樣的。原來not in 是不能命中索引的。。。。

改成 NOT EXISTS 之后查詢 20s ,效率真的差好多。

select * from t1  where  not  EXISTS (select phone from t2  where t1.phone =t2.phone)
2. 容易出現(xiàn)問題,或查詢結(jié)果有誤 (不能更嚴重的缺點)

createtable test1 (id1 int) createtable test2 (id2 int) insertinto test1 (id1) values (1),(2),(3) insertinto test2 (id2) values (1),(2)

我想要查詢,在test2中存在的 test1中的id 。使用IN的一般寫法是:

select id1 from test1  where id1 in (select id2 from test2)

結(jié)果是:

OK 木有問題!

select id1 from test1  where id1 in (select id1 from test2)

不小心把id2寫成id1了 ,會怎么樣呢?

結(jié)果是:

EXCUSE ME!為什么不報錯?

單獨查詢select id1 from test2是一定會報錯: 消息 207,級別 16,狀態(tài) 1,第 11 行 列名 'id1' 無效。另外,更多sql方面的面試題,公眾號Java精選,回復(fù)java面試,支持在線隨時隨地刷題。

然而使用了IN的子查詢就是這么敷衍,直接查出 1 2 3

這僅僅是容易出錯的情況,自己不寫錯還沒啥事兒,下面來看一下 NOT IN 直接查出錯誤結(jié)果的情況:

給test2插入一個空值:

insertinto test2 (id2) values (NULL)

我想要查詢,在test2中不存在的 test1中的id 。

select id1 from test1  where id1 notin (select id2 from test2)

結(jié)果是:

空白!顯然這個結(jié)果不是我們想要的。我們想要3。為什么會這樣呢?

原因是:NULL不等于任何非空的值啊!如果id2只有1和2, 那么3<>1 且 3<>2 所以3輸出了,但是 id2包含空值,那么 3也不等于NULL 所以它不會輸出。

跑題一句:建表的時候最好不要允許含空值,否則問題多多。


1. 用 EXISTS 或 NOT EXISTS 代替

select *  from test1     whereEXISTS (select * from test2  where id2 = id1 ) select *  FROM test1   whereNOTEXISTS (select * from test2  where id2 = id1 )
2. 用JOIN 代替

select id1 from test1     INNERJOIN test2 ON id2 = id1      select id1 from test1     LEFTJOIN test2 ON id2 = id1     where id2 ISNULL

妥妥的沒有問題了!

PS:那我們死活都不能用 IN 和 NOT IN 了么?并沒有,一位大神曾經(jīng)說過,如果是確定且有限的集合時,可以使用。如 IN (0,1,2)。


Java精選面試題 (微信小程序):5000+道面試題和選擇題,包含Java基礎(chǔ)、MQ、Redis、SpringBoot、Elasticsearch、Docker、K8s、Flink、Spark、架構(gòu)設(shè)計、大廠真題等,在線隨時刷題!
來源:https://www.cnblogs.com/hydor/p/5391556.html

公眾號“Java精選”所發(fā)表內(nèi)容注明來源的,版權(quán)歸原出處所有(無法查證版權(quán)的或者未注明出處的均來自網(wǎng)絡(luò),系轉(zhuǎn)載,轉(zhuǎn)載的目的在于傳遞更多信息,版權(quán)屬于原作者。如有侵權(quán),請聯(lián)系,筆者會第一時間刪除處理!

最近有很多人問,有沒有讀者或者摸魚交流群!加入方式很簡單,公眾號Java精選,回復(fù)“加群”,即可入群!

文章有幫助的話,點在看,轉(zhuǎn)發(fā)吧!

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點推薦
被曝生下畸形兒傳聞僅1月,闞清子官宣喜訊,連發(fā)三文表明態(tài)度

被曝生下畸形兒傳聞僅1月,闞清子官宣喜訊,連發(fā)三文表明態(tài)度

一口娛樂
2026-01-29 09:31:09
已確認,浙江有大到暴雪!今晚變天

已確認,浙江有大到暴雪!今晚變天

魯中晨報
2026-01-29 13:39:09
不敢置信!女子十二樂坊成員直播養(yǎng)不活自己,一晚上打賞不到3000

不敢置信!女子十二樂坊成員直播養(yǎng)不活自己,一晚上打賞不到3000

云中浮生
2026-01-24 21:37:46
奇葩!35歲女子4年不回家,母親來探望卻被懟,女子:就當我死了

奇葩!35歲女子4年不回家,母親來探望卻被懟,女子:就當我死了

娛樂帝皇丸
2026-01-28 15:18:51
16歲武漢男生凌晨離家,失聯(lián)超70小時, 父親:未帶手機現(xiàn)金,最后出現(xiàn)在橋上不見蹤跡

16歲武漢男生凌晨離家,失聯(lián)超70小時, 父親:未帶手機現(xiàn)金,最后出現(xiàn)在橋上不見蹤跡

大風(fēng)新聞
2026-01-29 13:53:22
人民日報怒批!炫富、偷稅749萬、跑國外,現(xiàn)又來“割內(nèi)地韭菜”

人民日報怒批!炫富、偷稅749萬、跑國外,現(xiàn)又來“割內(nèi)地韭菜”

小熊侃史
2026-01-18 07:20:09
港股地產(chǎn)股大漲,融創(chuàng)中國漲超30%

港股地產(chǎn)股大漲,融創(chuàng)中國漲超30%

每日經(jīng)濟新聞
2026-01-29 11:39:06
外交部:繼續(xù)深化國際執(zhí)法合作 加大力度打擊網(wǎng)賭電詐

外交部:繼續(xù)深化國際執(zhí)法合作 加大力度打擊網(wǎng)賭電詐

財聯(lián)社
2026-01-29 15:26:24
尼帕病毒來勢洶洶,建議:每家最好備6樣?xùn)|西,關(guān)鍵時刻能救命呢

尼帕病毒來勢洶洶,建議:每家最好備6樣?xùn)|西,關(guān)鍵時刻能救命呢

現(xiàn)代小青青慕慕
2026-01-28 08:59:53
阿富汗的鍋,拜登不背!

阿富汗的鍋,拜登不背!

山河路口
2026-01-28 23:12:39
心理學(xué)上有一個詞叫:梅拉賓法則(搞好人際關(guān)系最好的辦法)

心理學(xué)上有一個詞叫:梅拉賓法則(搞好人際關(guān)系最好的辦法)

經(jīng)濟觀察報
2025-09-01 10:06:25
1971年,劉思齊蒙冤入獄后向毛主席求助,毛澤東作出:娃娃們無罪

1971年,劉思齊蒙冤入獄后向毛主席求助,毛澤東作出:娃娃們無罪

史海孤雁
2026-01-27 18:02:17
瞞不住了!美媒:美軍高官已進臺島指揮導(dǎo)彈戰(zhàn),戰(zhàn)時先炸福建沿海

瞞不住了!美媒:美軍高官已進臺島指揮導(dǎo)彈戰(zhàn),戰(zhàn)時先炸福建沿海

史智文道
2026-01-29 16:14:14
要打就打痛!中國手段已升級,日本:中方不批準駐重慶總領(lǐng)事任命

要打就打痛!中國手段已升級,日本:中方不批準駐重慶總領(lǐng)事任命

通文知史
2026-01-28 14:30:03
太頂了!明明什么都沒露,卻性感得要命!

太頂了!明明什么都沒露,卻性感得要命!

貴圈真亂
2025-12-20 12:02:06
最新傷勢情況曝光,德約科維奇直言:對辛納絕不舉白旗

最新傷勢情況曝光,德約科維奇直言:對辛納絕不舉白旗

體育妞世界
2026-01-29 12:38:11
起風(fēng)了!加拿大已改口,禁止與中國簽協(xié)定,65萬噸油菜籽白買了?

起風(fēng)了!加拿大已改口,禁止與中國簽協(xié)定,65萬噸油菜籽白買了?

墨印齋
2026-01-29 11:47:54
加快男性衰老的因素:喝酒僅第5,排在第1的,很多男性還沒發(fā)現(xiàn)!

加快男性衰老的因素:喝酒僅第5,排在第1的,很多男性還沒發(fā)現(xiàn)!

醫(yī)學(xué)科普匯
2026-01-27 10:41:31
中國人一年少買了10萬輛進口寶馬

中國人一年少買了10萬輛進口寶馬

第一財經(jīng)資訊
2026-01-29 10:34:13
1973年,毛主席問楊振寧:萬壽無疆科學(xué)嗎?楊振寧的回答,讓主席笑了

1973年,毛主席問楊振寧:萬壽無疆科學(xué)嗎?楊振寧的回答,讓主席笑了

寄史言志
2026-01-24 17:53:13
2026-01-29 17:15:00
Java精選
Java精選
一場永遠也演不完的戲
1768文章數(shù) 3859關(guān)注度
往期回顧 全部

科技要聞

周亞輝的AI新賭局:國內(nèi)太卷 出海另起爐灶

頭條要聞

女大學(xué)生到東北游玩暈倒雪地凍傷 三根手指或面臨截肢

頭條要聞

女大學(xué)生到東北游玩暈倒雪地凍傷 三根手指或面臨截肢

體育要聞

詹姆斯哭了!騎士視頻致敬41歲超巨

娛樂要聞

張譯不再隱瞞!公開回應(yīng)退圈息影真相

財經(jīng)要聞

崔東樹:中國汽車未來年銷或達5000萬輛

汽車要聞

車長超5米還帶后輪轉(zhuǎn)向 比亞迪海豹08/海獅08將亮相

態(tài)度原創(chuàng)

藝術(shù)
游戲
手機
親子
軍事航空

藝術(shù)要聞

梵高全集(高清350張)震撼……

PS+港區(qū)2月會免來了! 包含《冰點之下》等

手機要聞

游戲直播神器!iQOO 15 Ultra支持一鍵投屏 開播0門檻

親子要聞

一個現(xiàn)象:縣城里的孕婦越來越少了

軍事要聞

中國代表:支持伊朗國家穩(wěn)定 武力解決不了問題

無障礙瀏覽 進入關(guān)懷版