色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在使用left jion時,on和where條件的區別

數據分析與開發 ? 來源:數據分析與開發 ? 2023-06-16 14:46 ? 次閱讀

前天寫SQL時本想通過 A left B join on and 后面的條件來使查出的兩條記錄變成一條,奈何發現還是有兩條。

后來發現 join on and 不會過濾結果記錄條數,只會根據and后的條件是否顯示 B表的記錄,A表的記錄一定會顯示。

不管and 后面的是A.id=1還是B.id=1,都顯示出A表中所有的記錄,并關聯顯示B中對應A表中id為1的記錄或者B表中id為1的記錄。

運行sql :

select*fromstudentsleftjoinclasscons.classId=c.idorderbys.id
9995c980-0bf9-11ee-962d-dac502259ad0.png

運行sql :

select*fromstudentsleftjoinclasscons.classId=c.idands.name="張三"orderbys.id
99acf1fa-0bf9-11ee-962d-dac502259ad0.png

運行sql :

select*fromstudentsleftjoinclasscons.classId=c.idandc.name="三年級三班"orderbys.id
99b6cf5e-0bf9-11ee-962d-dac502259ad0.png

數據庫在通過連接兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然后再將這張臨時表返回給用戶。

在使用left jion時,on和where條件的區別如下:

1、 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。

2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。

假設有兩張表:

表1:tab2

id size
1 10
2 20
3 30

表2:tab2

size name
10 AAA
20 BBB
30 CCC

兩條SQL:

1、

select*formtab1leftjointab2on(tab1.size=tab2.size)wheretab2.name=’AAA’

2、

select*formtab1leftjointab2on(tab1.size=tab2.sizeandtab2.name=’AAA’)

第一條SQL的過程:

1、中間表on條件:

tab1.size=tab2.size
99d5a2e4-0bf9-11ee-962d-dac502259ad0.png

2、再對中間表過濾where 條件:

tab2.name=’AAA’
99f17974-0bf9-11ee-962d-dac502259ad0.png

第二條SQL的過程:

1、中間表on條件:

tab1.size=tab2.sizeandtab2.name=’AAA’

(條件不為真也會返回左表中的記錄)9a0ecc2c-0bf9-11ee-962d-dac502259ad0.png

其實以上結果的關鍵原因就是left join,right join,full join的特殊性,不管on上的條件是否為真都會返回left或right表中的記錄,full則具有left和right的特性的并集。而inner jion沒這個特殊性,則條件放在on中和where中,返回的結果集是相同的。
責任編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    777

    瀏覽量

    44418
  • 數據庫
    +關注

    關注

    7

    文章

    3868

    瀏覽量

    65006

原文標題:SQL 語句中 left join 后用 on 還是 where,區別大了!

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Hive查詢之where語句剖析

    黑猴子的家:Hive 查詢之 where 語句
    發表于 07-12 13:46

    為什么Crosstalk,Left-to-Right 和Right-to-Left是不一樣的?

    看了些D類功放的SPEC,發現Crosstalk,Left-to-Right 和Right-to-Left是不一樣的?為什么會不一樣?
    發表于 08-12 06:27

    m3 line stage left channel cir

    m3 line stage left channel circuit
    發表于 09-08 21:48 ?2127次閱讀
    m3 line stage <b class='flag-5'>left</b> channel cir

    Where Is Ground?

    Where Is Ground? Bill Laumeister
    發表于 10-02 00:06 ?995次閱讀
    <b class='flag-5'>Where</b> Is Ground?

    SQL中on條件where條件區別

    SQL中on條件where條件區別 數據庫通過連接兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然后再將這張臨時表返回給用戶。
    發表于 11-28 14:34 ?3465次閱讀
    SQL中on<b class='flag-5'>條件</b>與<b class='flag-5'>where</b><b class='flag-5'>條件</b>的<b class='flag-5'>區別</b>

    SQL語句中where條件后為什么要寫上1=1

    這段代碼應該是由程序(例如Java)中生成的,where條件中 1=1 之后的條件是通過 if 塊動態變化的。例如:
    的頭像 發表于 02-15 14:51 ?5260次閱讀

    C#基礎教程-查詢-復合from、where子句

    C#基礎教程-查詢-復合from、where子句(嵌入式開發平臺排行榜)-文檔為C#基礎教程-查詢-復合from、where子句總結文檔,是一份不錯的參考資料,感興趣的可以下載看看,,,,,,,,,,,,,
    發表于 08-04 14:53 ?1次下載
    C#基礎教程-查詢-復合from、<b class='flag-5'>where</b>子句

    SQL語句中left join后用on還是where

    來自丨blog.csdn.net/wqc19920906/article/details/79785424 前天寫SQL時本想通過 A left B join on and 后面的條件來使查出的兩條
    的頭像 發表于 11-22 11:08 ?2244次閱讀

    什么是Shift-Left安全?

    軟件開發中,Shift-Left是一種幫助開發人員軟件開發過程早期發現漏洞和編碼錯誤的做法。Shift-Left Security是一種有效的方法,它專注于安全性,并有助于
    的頭像 發表于 05-16 11:31 ?984次閱讀
    什么是Shift-<b class='flag-5'>Left</b>安全?

    insert后面可以跟where

    可以,"INSERT"語句可以與"WHERE"子句一起使用。"INSERT"語句用于向數據庫表中插入新的行,而"WHERE"子句用于指定插入行的條件。 下面是一個示例: INSERT INTO 表名
    的頭像 發表于 11-21 14:20 ?7496次閱讀

    sql語句where條件查詢

    的細節,包括使用的操作符、條件的組合、多張表的查詢、條件的性能優化等方面。 首先,讓我們了解一下WHERE子句中常用的操作符。SQL中,常用的操作符包括: 比較操作符: 等于(=):
    的頭像 發表于 11-23 11:28 ?1351次閱讀

    sql怎么where條件判斷

    SQL中,WHERE條件用于篩選符合特定條件的記錄。它提供了一種查詢中過濾數據的方法,使您能夠根據所需的特定
    的頭像 發表于 11-23 11:30 ?2043次閱讀

    sql where條件的執行順序

    深入討論WHERE條件的執行順序之前,先回顧一下一般SQL語句的執行順序。一條SQL語句的執行通常可以分為以下幾個步驟:解析器分析語法、語義校驗、查詢優化器生成執行計劃、執行計劃生成與執行。在這個過程中,
    的頭像 發表于 11-23 11:31 ?2382次閱讀

    sql的where條件多個and順序

    SQL中,WHERE子句用于過濾查詢結果以提供符合特定條件的記錄。當有多個AND操作符時,WHERE子句的順序并不會影響查詢結果,但是正確的AND操作符順序可以提高查詢的可讀性和性能
    的頭像 發表于 11-23 11:33 ?4079次閱讀

    sql語句多個條件怎么連接

    SQL中,多個條件可以使用邏輯運算符連接,常用的邏輯運算符有AND、OR和NOT。這些運算符可以幫助我們查詢中指定多個條件以過濾數據,從而獲得我們需要的結果集。 AND運算符用于同
    的頭像 發表于 11-23 11:34 ?2619次閱讀
    主站蜘蛛池模板: 国产69精品久久久久乱码韩国 | 879影视动漫h免费观看 | 亚洲无吗视频 | 色婷婷亚洲精品天天综合影院 | 妙玉被肉干高H潮文 | 久久久国产精品免费A片蜜芽广 | 老师给美女同学开嫩苞 | 久久精品av | 簧片免费观看 | 亚洲 日韩 欧美 国产专区 | 第一精品福利导福航 | 张开腿我尝尝你的草莓 | 青柠在线观看视频在线 | 亚洲乱码一区二区三区香蕉 | 观看免费做视频 | WINDOWSCHANNEL老太| 精品无码无人网站免费视频 | 久久综合中文字幕无码 | 久久五月综合婷婷中文云霸高清 | jizz非洲| 国语自产一区第二页 | 欧美人与动牲交XXXXBBBB免费 | 在线 日韩 欧美 国产 社区 | 国产欧美二区综合 | 日韩精品久久久久影院 | 亚洲精品一区二区在线看片 | 国产不卡无码高清视频 | 性欧美sexovideotv| 2018三级网站免费观看 | 亚洲精品拍拍央视网出文 | 麻豆沈芯语| 我们日本在线观看免费动漫下载 | 久久亚洲AV无码精品午色夜麻豆 | 黄色亚洲片 | 偷窥国产亚洲免费视频 | 亚洲欧洲久久 | 無码一区中文字幕少妇熟女H | 河南老太XXXXXHD | 秋霞久久久久久一区二区 | 国产精品一区二区免费 | 中文人妻熟妇精品乱又伧 |