最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MYSQL多表聯(lián)查on和where的區(qū)別小結(jié)

 更新時間:2023年11月06日 16:00:39   作者:當(dāng)我們不再理解世界  
在使用left join時過濾條件放到on后面還是where后面是有區(qū)別的,如果沒有搞清楚他們的區(qū)別,連表匯總的結(jié)果就會變少或者變多,本文就來詳細(xì)介紹一下兩者的區(qū)別,感興趣的可以了解一下

一、背景

在一次對數(shù)據(jù)進(jìn)行統(tǒng)計(jì)的時候,需要對兩張表進(jìn)行關(guān)聯(lián),類似于這樣的語句a left join b on a.id = b.id where b.name = xx。發(fā)現(xiàn)最終的結(jié)果和預(yù)期不一致,匯總之后的數(shù)據(jù)變少了。

一開始還比較費(fèi)解,后面回過神來才發(fā)現(xiàn),犯了一個低級的錯誤,就是在使用left join時過濾條件放到on后面還是where后面是有區(qū)別的,如果沒有搞清楚他們的區(qū)別,連表匯總的結(jié)果就會變少或者變多。

二、探究

student表

classes表

2.1、統(tǒng)計(jì)每個班級中女生的數(shù)量 錯誤的寫法

select a.name, count(b.name) as num from classes a left join students b
on a.id = b.class_id
where b.gender = 'F'
group by a.name

查詢結(jié)果

正確的寫法

select a.name, count(b.name) as num
from classes a left join students b
on a.id = b.class_id and b.gender = 'F'
group by a.name

查詢結(jié)果

2.2、只統(tǒng)計(jì)"一班"的學(xué)生數(shù)量 錯誤的寫法

select a.name, count(b.name) as num
from classes a left join students b
on a.id = b.class_id and a.name = '一班'
group by a.name 

查詢結(jié)果

正確的寫法

select a.name, count(b.name) as num
from classes a left join students b
on a.id = b.class_id
where a.name = '一班'
group by a.name 

查詢結(jié)果

問題一錯誤的原因:由于在where條件中對右表限制,導(dǎo)致數(shù)據(jù)缺失(四班應(yīng)該有個為0的結(jié)果)。

問題二錯誤的原因:由于在on條件中對左表限制,導(dǎo)致數(shù)據(jù)多余(其他班的結(jié)果也出來了,還是錯的)。on 后跟關(guān)聯(lián)表(從表)的過濾條件,如果再加篩選條件只針對關(guān)聯(lián)表!

on 后跟關(guān)聯(lián)表(從表)的過濾條件,where 后跟主表或臨時表的篩選條件(左連接為例,主表的數(shù)據(jù)都會查詢到,所以臨時表中必定包含主表所有的字段,需要給主表加什么篩選條件,直接給臨時表加效果相同) 。

三、總結(jié)

通過上面的問題現(xiàn)象和分析,可以得出了結(jié)論:在left join語句中,左表過濾必須放where條件中,右表過濾必須放on條件中,這樣結(jié)果才能不多不少,剛剛好。

到此這篇關(guān)于MYSQL多表聯(lián)查on和where的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)MYSQL on和where區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql5.7 生成列 generated column用法實(shí)例分析

    mysql5.7 生成列 generated column用法實(shí)例分析

    這篇文章主要介紹了mysql5.7 生成列 generated column用法,結(jié)合實(shí)例形式分析了mysql5.7 生成列 generated column基本原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • MySQL總是差八個小時該如何解決

    MySQL總是差八個小時該如何解決

    最近在用mybatis時發(fā)現(xiàn),將LocalDateTime插入到數(shù)據(jù)庫時時間少了8小時,下面這篇文章主要給大家介紹了關(guān)于MySQL總是差八個小時該如何解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • MySQL 格式化時間的實(shí)現(xiàn)示例

    MySQL 格式化時間的實(shí)現(xiàn)示例

    MySQL提供了多種日期和時間類型,在處理時間時需要根據(jù)不同類型選擇不同的格式化方法,常用的日期類型有DATE、YEAR、TIME;常用的日期時間類型有DATETIME和TIMESTAMP,本文就來介紹一下MySQL 格式化時間,感興趣的可以了解一下
    2023-10-10
  • MySQL查詢字段為NULL、不為NULL的數(shù)據(jù)問題

    MySQL查詢字段為NULL、不為NULL的數(shù)據(jù)問題

    介紹了MySQL查詢字段為NULL和不為NULL的數(shù)據(jù)時需要注意的幾點(diǎn),包括查詢語句的編寫和NULL與其他字符的操作,通過實(shí)際操作對比,指出使用IS NOT NULL可以正確查詢到非NULL字段的數(shù)據(jù)
    2025-02-02
  • 企業(yè)生產(chǎn)MySQL優(yōu)化介紹

    企業(yè)生產(chǎn)MySQL優(yōu)化介紹

    這篇文章主要介紹了企業(yè)生產(chǎn)MySQL優(yōu)化介紹的相關(guān)內(nèi)容,文中敘述了其優(yōu)化內(nèi)容,各個方面介紹的比較詳細(xì),需要的朋友可以參考。
    2017-10-10
  • cmd中MySQL中文數(shù)據(jù)亂碼問題解決方法

    cmd中MySQL中文數(shù)據(jù)亂碼問題解決方法

    MySQL是默認(rèn)utf8編碼的,所建數(shù)據(jù)庫也是設(shè)置utf8編碼,使用程序可以新增中文數(shù)據(jù),在cmd中使用SQL語句新增數(shù)據(jù)則報(bào)錯,有類似情況的朋友可以參考下本文
    2014-02-02
  • MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解

    MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解

    這篇文章主要介紹了MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解,THREAD_CACHE是Mysql的連接池,table_cache指定表高速緩存的大小,需要的朋友可以參考下
    2014-07-07
  • 超簡單的qps統(tǒng)計(jì)方法(推薦)

    超簡單的qps統(tǒng)計(jì)方法(推薦)

    下面小編就為大家?guī)硪黄唵蔚膓ps統(tǒng)計(jì)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL | 從SQL到數(shù)據(jù)的完整路徑

    MySQL | 從SQL到數(shù)據(jù)的完整路徑

    MySQL執(zhí)行流程分為服務(wù)層和存儲引擎層,服務(wù)層包括連接器、查詢緩存、SQL語句解析、預(yù)處理、優(yōu)化和執(zhí)行,連接器負(fù)責(zé)建立連接、校驗(yàn)用戶名和密碼、處理長連接和短連接,本文介紹MySQL | 從SQL到數(shù)據(jù)的完整路徑,感興趣的朋友一起看看吧
    2026-05-05
  • 忘記mysql數(shù)據(jù)庫root用戶密碼重置方法[圖文]

    忘記mysql數(shù)據(jù)庫root用戶密碼重置方法[圖文]

    忘記mysql數(shù)據(jù)庫root用戶密碼重置方法,需要的朋友可以參考下。
    2011-11-11

最新評論

望都县| 陕西省| 宜丰县| 许昌市| 东安县| 揭东县| 蓬安县| 东宁县| 临漳县| 富顺县| 普陀区| 云南省| 连云港市| 长子县| 阿拉尔市| 桑植县| 武乡县| 库伦旗| 上饶县| 安塞县| 阜平县| 宜黄县| 黑河市| 宣武区| 赣榆县| 武平县| 沅陵县| 洞头县| 长沙市| 马龙县| 南漳县| 商水县| 博白县| 深圳市| 阳江市| 错那县| 皮山县| 涿州市| 普宁市| 林西县| 射洪县|