91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在sql語句中替換Not In方法

發布時間:2021-08-26 18:04:41 來源:億速云 閱讀:176 作者:chen 欄目:數據庫

本篇內容主要講解“怎么在sql語句中替換Not In方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么在sql語句中替換Not In方法”吧!

目的:

替換NOT IN 方法。

說明:

在單條SQL語句中,不使用儲存過程,不使用臨時表。使用存儲過程和臨時表不再本文的討論范圍中。

實現:

例:

aa:結構

id                                       value   ……

1                                        a

2                                            b

3                                            c

4                                            d

5                                            e

6                                            f

---------------------------------------------------------------------------------------------

 

bb:結構

id    ……

2

4

6

 

現在我要取表aa里的所有字段,條件是aaid值不在bbid值當中(not in)。也就是應該返回所有id為奇數的字段

 

使用NOT INSQL:

select * from aa where id not in(select id from bb)

就一條語句,簡單明了,可惜效率不高,而且公司規范要求盡量不用NOT IN,害我費了好大事crying……

 

改造后的SQL:

select cc.id,cc.value from (select aa.*,bb.id as tempcolum from aa left join bb on aa.id=bb.id) as cc where cc.tempcolum is null

 

解釋一下。在開始時候我最早想用內聯表的方式,可是無論如何也每找到一個好的辦法,干脆就是實現不了。(大家有好辦法指教先。)

后來自己考慮了一下NOT IN的邏輯,A NOT IN B就是說A是主體,B起到的之不過是一個判斷作用,我們可以先把所有符合條件的A記錄全部查詢出來而不管他是否屬于B,然后再從這里剔除值同時屬于B的部分。

Select aa.* from aa

但是僅僅這樣是不夠的,我們無法利用這個返回的結果集判斷是否屬于B并排除它,為此,我想到構造一個臨時的列,這個列的值應該是在A的結果集范圍內,所有在B中的值。而這個結果集的主體應該是所有滿足先決條件的A,然后加上滿足條件的B,而不滿足條件的B值則不再考慮范圍內,所以用了left join

這一段是關鍵,不知道我闡述清楚了沒有,沒明白的繼續看

于是就出來這一句。

select aa.*,bb.id as tempcolum from aa left join bb on aa.id=bb.id

沒看明白上面的看結果集就明白了

id  value        tempcolum

---------------------------------------------

1     a                NULL

2     b                2

3     c                NULL

4     d                4

5     e                NULL

6     f                6

 

看到這個結果集我想大家都明白我的意思了吧。對了,我們就是要對這個結果集進行二次操作。

相信大家都看到了,生成的這個結果集包含了所有符合條件的表aa字段和bbid,如果aa中的值在bb中,則tempcolum的值就不會為null,如果不在就是null,這樣我們只需要從這個結果集里查詢所有tempcolum值為null的就可以滿足我們的要求了

所以最終的sql出來了

select cc.id,cc.value from (select aa.*,bb.id as tempcolum from aa left join bb on aa.id=bb.id) as cc where cc.tempcolum is null

我們只需要idvalue兩個字段,其他的就不要了。

結果

id  value

-------------------------

1     a        

3     c        

5           e        

 

ok,實現了,希望對大家有幫助。

到此,相信大家對“怎么在sql語句中替換Not In方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

柯坪县| 东乌珠穆沁旗| 高雄市| 公安县| 金塔县| 河间市| 佳木斯市| 三都| 班玛县| 利津县| 马公市| 宜州市| 乌海市| 田东县| 安宁市| 民乐县| 济源市| 衡南县| 余庆县| 永年县| 曲阳县| 阿城市| 东阿县| 景德镇市| 孝感市| 全椒县| 泉州市| 泰兴市| 莱州市| 宝应县| 玉龙| 个旧市| 原阳县| 绥中县| 平凉市| 甘孜县| 三河市| 日照市| 五家渠市| 武城县| 天等县|