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

關(guān)于Mysql中ON與Where區(qū)別問題詳解

 更新時(shí)間:2022年02月18日 10:51:08   作者:啥時(shí)能掙6000塊  
在編寫SQL腳本中,多表連接查詢操作需要使用到on和where條件,但是經(jīng)常會(huì)混淆兩者的用法,從而造成取數(shù)錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于Mysql中ON與Where區(qū)別問題的相關(guān)資料,需要的朋友可以參考下

今天工作的時(shí)候編寫了一個(gè)SQL,大家一起來看一下

SELECT * FROM user user 
LEFT JOIN 
user_message msg
ON user.id = msg.user_id AND user.name = '張三'

我們有一張user表

我們還有一張user_message表

我們執(zhí)行上面的SQL后,查詢結(jié)果如下

并不如我們所想的,只出現(xiàn)張三的結(jié)果,這是為什么呢?

經(jīng)過我的整理發(fā)現(xiàn)查詢是如下原因

關(guān)聯(lián)的時(shí)候ON條件是在合并兩張表形成臨時(shí)表前進(jìn)行的條件篩選,所以在使用 JOIN 關(guān)鍵字進(jìn)行關(guān)聯(lián)的時(shí)候,尤其是左關(guān)聯(lián)或右關(guān)聯(lián)的時(shí)候,不要使用 字段 = '定值' 這種篩選方式

在內(nèi)關(guān)聯(lián)(inner join)中,Mysql判斷 字段 = '定值' 如果為false,會(huì)被篩選掉,如果為true,則會(huì)正確顯示數(shù)據(jù)。

在左關(guān)聯(lián)(left join)中,Mysql判斷 字段 = '定值' 如果為false,會(huì)返回左表的數(shù)據(jù),如果為true,則會(huì)正確顯示顯示數(shù)據(jù)。

在右關(guān)聯(lián)(right join)中,Mysql判斷 字段 = '定值' 如果為false,會(huì)返回右表的數(shù)據(jù),如果為true,則會(huì)正確顯示顯示數(shù)據(jù)。

所以我上述的SQL會(huì)返回張三的全部數(shù)據(jù),除張三外的所有數(shù)據(jù)只會(huì)返回左表數(shù)據(jù),右表全部為null,無論是否可以匹配到

where是在臨時(shí)表創(chuàng)建成功后,再次對(duì)臨時(shí)表進(jìn)行篩選的,所以此時(shí)我們可以對(duì)關(guān)聯(lián)后的數(shù)據(jù)隨意進(jìn)行篩選。

區(qū)別總結(jié):

先執(zhí)行on,后執(zhí)行where;on是建立關(guān)聯(lián)關(guān)系,where是對(duì)關(guān)聯(lián)關(guān)系的篩選。

比如兩個(gè)表進(jìn)行l(wèi)eft join連接查詢結(jié)果,where會(huì)對(duì)查詢的結(jié)果進(jìn)行過濾, on會(huì)返回驅(qū)動(dòng)表的所有數(shù)據(jù)。

left join按照條件關(guān)聯(lián),不管是否為真,都返回左邊表的數(shù)據(jù)。

 總結(jié)

到此這篇關(guān)于關(guān)于Mysql中ON與Where區(qū)別問題的文章就介紹到這了,更多相關(guān)Mysql ON與Where區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql的Explain使用方式及索引總結(jié)

    Mysql的Explain使用方式及索引總結(jié)

    這篇文章主要介紹了Mysql的Explain使用方式及索引總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • mysql備份與恢復(fù)詳解

    mysql備份與恢復(fù)詳解

    本篇文章是對(duì)mysql的備份與恢復(fù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 利用SQL注入漏洞拖庫(kù)的方法

    利用SQL注入漏洞拖庫(kù)的方法

    利用SQL注入漏洞登錄后臺(tái)和利用SQL注入漏洞拖庫(kù)是我學(xué)習(xí)了相關(guān)內(nèi)容之后的一點(diǎn)小結(jié),沒啥深度,正如文章開頭所說,權(quán)當(dāng)總結(jié),別無它意
    2012-01-01
  • Can't connect to MySQL server on localhost (10061)解決方法

    Can't connect to MySQL server 

    今天在安裝mysql后使用mysql命令連接mysql時(shí)報(bào)錯(cuò)?Can't connect to MySQL server on localhost (10061),一般是因?yàn)閙ysql服務(wù)沒有啟動(dòng)或者用戶名密碼不正確
    2011-03-03
  • 以Centos為例講解MySQL在Linux中的部署

    以Centos為例講解MySQL在Linux中的部署

    這篇文章主要介紹了以Centos為例講解MySQL在Linux中的部署,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Oracle和MySQL中生成32位uuid的方法舉例(國(guó)產(chǎn)達(dá)夢(mèng)同Oracle)

    Oracle和MySQL中生成32位uuid的方法舉例(國(guó)產(chǎn)達(dá)夢(mèng)同Oracle)

    近日遇到朋友問及如何生成UUID,UUID是通用唯一識(shí)別碼(Universally Unique Identifier)方法,這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于Oracle和MySQL中生成32位uuid的方法,需要的朋友可以參考下
    2023-08-08
  • MySQL進(jìn)行大數(shù)據(jù)量分頁的優(yōu)化技巧分享

    MySQL進(jìn)行大數(shù)據(jù)量分頁的優(yōu)化技巧分享

    mysql大數(shù)據(jù)量分頁情況下性能會(huì)很差,所以本文就來講一講mysql大數(shù)據(jù)量下偏移量很大,性能很差的問題,并附上解決方式,希望對(duì)大家有所幫助
    2024-01-01
  • MySQL中的日期時(shí)間類型與格式化方式

    MySQL中的日期時(shí)間類型與格式化方式

    這篇文章主要介紹了MySQL中的日期時(shí)間類型與格式化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 刪除mysql數(shù)據(jù)表如何操作

    刪除mysql數(shù)據(jù)表如何操作

    在本篇文章里小編給大家分享了關(guān)于刪除mysql數(shù)據(jù)表簡(jiǎn)單方法,需要的朋友們可以參考學(xué)習(xí)下。
    2020-06-06
  • Mysql賬號(hào)管理與引擎相關(guān)功能實(shí)現(xiàn)流程

    Mysql賬號(hào)管理與引擎相關(guān)功能實(shí)現(xiàn)流程

    Mysql中的每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制、索引技巧、鎖定水平、并且最終提供廣泛的不同功能和能力。通過選擇不同的技術(shù),你能夠獲得額外的速度或者功能,從而改善應(yīng)用的整體功能。這些不同的技術(shù)以及配套的相關(guān)功能在MySQL中被稱作存儲(chǔ)引擎
    2022-10-10

最新評(píng)論

洛浦县| 高雄市| 田阳县| 阳西县| 惠州市| 高陵县| 阿图什市| 兴宁市| 丽江市| 藁城市| 宁河县| 台东县| 石泉县| 宁蒗| 吉林市| 岢岚县| 饶河县| 宿松县| 广昌县| 柘荣县| 准格尔旗| 上高县| 新干县| 东城区| 巴中市| 望奎县| 克拉玛依市| 綦江县| 桓台县| 盘锦市| 象州县| 额尔古纳市| 浦县| 凌源市| 建瓯市| 罗城| 梁山县| 镇康县| 潼关县| 晋中市| 郎溪县|