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

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

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

今天工作的時候編寫了一個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)的時候ON條件是在合并兩張表形成臨時表前進(jìn)行的條件篩選,所以在使用 JOIN 關(guān)鍵字進(jìn)行關(guān)聯(lián)的時候,尤其是左關(guān)聯(lián)或右關(guān)聯(lián)的時候,不要使用 字段 = '定值' 這種篩選方式

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

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

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

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

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

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

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

比如兩個表進(jìn)行l(wèi)eft join連接查詢結(jié)果,where會對查詢的結(jié)果進(jìn)行過濾, on會返回驅(qū)動表的所有數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

    利用SQL注入漏洞拖庫的方法

    利用SQL注入漏洞登錄后臺和利用SQL注入漏洞拖庫是我學(xué)習(xí)了相關(guān)內(nèi)容之后的一點小結(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時報錯?Can't connect to MySQL server on localhost (10061),一般是因為mysql服務(wù)沒有啟動或者用戶名密碼不正確
    2011-03-03
  • 以Centos為例講解MySQL在Linux中的部署

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

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

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

    近日遇到朋友問及如何生成UUID,UUID是通用唯一識別碼(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ù)量分頁情況下性能會很差,所以本文就來講一講mysql大數(shù)據(jù)量下偏移量很大,性能很差的問題,并附上解決方式,希望對大家有所幫助
    2024-01-01
  • MySQL中的日期時間類型與格式化方式

    MySQL中的日期時間類型與格式化方式

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

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

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

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

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

最新評論

桦甸市| 伊宁市| 兴业县| 东兰县| 沾益县| 浑源县| 中山市| 富民县| 华蓥市| 扶绥县| 鹿邑县| 英德市| 绵竹市| 山东省| 楚雄市| 太保市| 肇源县| 孟村| 石河子市| 林西县| 延川县| 台江县| 绍兴县| 宁津县| 高青县| 龙江县| 伊川县| 康保县| 黄冈市| 屏东县| 漠河县| 高唐县| 萨迦县| 东乌| 湛江市| 工布江达县| 长垣县| 台湾省| 吉林省| 华阴市| 乌苏市|