欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、背景

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

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

二、探究

student表

classes表

2.1、統(tǒng)計(jì)每個(gè)班級(jí)中女生的數(shù)量 錯(cuò)誤的寫(xiě)法

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

查詢(xún)結(jié)果

正確的寫(xiě)法

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

查詢(xún)結(jié)果

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

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 

查詢(xún)結(jié)果

正確的寫(xiě)法

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 

查詢(xún)結(jié)果

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

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

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

三、總結(jié)

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

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

相關(guān)文章

  • mysql數(shù)據(jù)庫(kù)中各種鎖歸納總結(jié)

    mysql數(shù)據(jù)庫(kù)中各種鎖歸納總結(jié)

    相對(duì)于其他的數(shù)據(jù)庫(kù)而言,MySQL的鎖機(jī)制比較簡(jiǎn)單,最顯著的特點(diǎn)就是不同的存儲(chǔ)引擎支持不同的鎖機(jī)制,這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫(kù)中各種鎖歸納總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • Linux下mysql 8.0安裝教程

    Linux下mysql 8.0安裝教程

    這篇文章主要為大家詳細(xì)介紹了Linux下mysql 8.0安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • centos上安裝mysql并設(shè)置遠(yuǎn)程訪(fǎng)問(wèn)的操作方法

    centos上安裝mysql并設(shè)置遠(yuǎn)程訪(fǎng)問(wèn)的操作方法

    這篇文章主要介紹了centos上安裝mysql并設(shè)置遠(yuǎn)程訪(fǎng)問(wèn)的操作方法,需要的朋友可以參考下
    2017-11-11
  • Mysql數(shù)據(jù)庫(kù)命令大全

    Mysql數(shù)據(jù)庫(kù)命令大全

    mysql命令大家經(jīng)常會(huì)用到,但是很少有朋友整理吧,最近項(xiàng)目不多,抽個(gè)時(shí)間把mysql數(shù)據(jù)庫(kù)命令總結(jié)給大家,需要的朋友可以參考下
    2015-09-09
  • mysql索引(覆蓋索引,聯(lián)合索引,索引下推)

    mysql索引(覆蓋索引,聯(lián)合索引,索引下推)

    這篇文章主要介紹了mysql索引(覆蓋索引,聯(lián)合索引,索引下推),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Mysql sql慢查詢(xún)監(jiān)控腳本代碼實(shí)例

    Mysql sql慢查詢(xún)監(jiān)控腳本代碼實(shí)例

    這篇文章主要介紹了Mysql sql慢查詢(xún)監(jiān)控腳本代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • mysql 5.7.16 免安裝版安裝配置方法圖文教程

    mysql 5.7.16 免安裝版安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.16 免安裝版安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • MySQL for update鎖表還是鎖行校驗(yàn)(過(guò)程詳解)

    MySQL for update鎖表還是鎖行校驗(yàn)(過(guò)程詳解)

    在MySQL中,使用for update子句可以對(duì)查詢(xún)結(jié)果集進(jìn)行行級(jí)鎖定,以便在事務(wù)中對(duì)這些行進(jìn)行更新或者防止其他事務(wù)對(duì)這些行進(jìn)行修改,這篇文章主要介紹了MySQL for update鎖表還是鎖行校驗(yàn),需要的朋友可以參考下
    2024-02-02
  • master and slave have equal MySQL server ids

    master and slave have equal MySQL server ids

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids
    2013-07-07
  • Centos MySQL 5.7安裝、升級(jí)教程

    Centos MySQL 5.7安裝、升級(jí)教程

    這篇文章主要為大家詳細(xì)介紹了Centos MySQL 5.7安裝、升級(jí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評(píng)論