日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
怎么在sql語句中替換NotIn方法

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

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)天心免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

目的:

替換NOT IN方法。

說明:

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

實(shí)現(xiàn):

例:

表aa:結(jié)構(gòu)

id                                       value   ……

1                                        a

2                                           b

3                                           c

4                                           d

5                                           e

6                                           f

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

 

表bb:結(jié)構(gòu)

id    ……

2

4

6

 

現(xiàn)在我要取表aa里的所有字段,條件是aa的id值不在bb的id值當(dāng)中(not in)。也就是應(yīng)該返回所有id為奇數(shù)的字段

 

使用NOT IN的SQL:

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

就一條語句,簡(jiǎn)單明了,可惜效率不高,而且公司規(guī)范要求盡量不用NOT IN,害我費(fèi)了好大事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

 

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

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

Select aa.* from aa

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

這一段是關(guān)鍵,不知道我闡述清楚了沒有,沒明白的繼續(xù)看

于是就出來這一句。

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

沒看明白上面的看結(jié)果集就明白了

id  value        tempcolum

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

1     a                NULL

2     b                2

3     c                NULL

4     d                4

5     e                NULL

6     f                6

 

看到這個(gè)結(jié)果集我想大家都明白我的意思了吧。對(duì)了,我們就是要對(duì)這個(gè)結(jié)果集進(jìn)行二次操作。

相信大家都看到了,生成的這個(gè)結(jié)果集包含了所有符合條件的表aa字段和bb的id,如果aa中的值在bb中,則tempcolum的值就不會(huì)為null,如果不在就是null,這樣我們只需要從這個(gè)結(jié)果集里查詢所有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

我們只需要id和value兩個(gè)字段,其他的就不要了。

結(jié)果

id  value

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

1     a        

3     c        

5          e        

 

ok,實(shí)現(xiàn)了,希望對(duì)大家有幫助。

到此,相信大家對(duì)“怎么在sql語句中替換Not In方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


當(dāng)前題目:怎么在sql語句中替換NotIn方法
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/gcopji.html