日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MySql 别犯糊涂了! LEFT JOIN 的 ON 后接上筛选条件,多个条件会出事!

發布時間:2023/12/20 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySql 别犯糊涂了! LEFT JOIN 的 ON 后接上筛选条件,多个条件会出事! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多時候我們在使用??LEFT JOIN? ?...... ON .... 時, 除了連接兩個表的字段條件外,我們往往還需要一些等值或者范圍 等等類似的數據篩選條件。

那么對于初學者,往往會犯一個錯誤,就是 想當然 地 認為,?ON 后面的條件是逐一執行的,因為沒有了解清楚 ON 后面接條件的規則。

是個什么樣的場景??

看實例講解:

userinfo 表 :

(找兼職的人員名單信息表)

jobinfo表 :

(兼職工作信息及職業要求表)

業務需求:

根據職業要求 給 找兼職的人員 匹配上 目前 可以做的兼職,輸出數據條。?

例如,李三是一個程序員,他迫于經濟壓力,不得不向社會低頭,想找一些自己能做的兼職。

使用 WHERE

如果我們不用? left join ......?on ... , 僅僅使用 where,那么簡單寫下sql是:

SELECT * FROM userinfo AS u ,jobinfo AS j WHERE u.userProfession=j.professionRequire AND j.professionRequire='程序員'

查詢出來的結果如下:

是我們需要的結果,可以看的,程序員李三能做的兼職有,送外賣或者當保安。?

使用?LEFT JOIN?...... ON??......

初學者(罪過)寫的SQL :

想當然地把篩選條件 職業要求為 ‘ 程序員’? 直接?拼接在 ON 后面

SELECT * FROM userinfo AS u LEFT JOIN jobinfo AS j ON u.userProfession=j.professionRequire AND j.professionRequire='程序員'

這樣地拼接篩選條件其實是達不到所想要的效果的,先來看看這樣的執行結果:

可以看到查詢出來很多我們不想要的數據,為什么會這樣?

原因:

因為如果直接把關聯表的篩選條件拼接在 ON 后, 執行的順序其實是:

先將?jobinfo 表 按照篩選條件??professionRequire='程序員'? 執行后作為子查詢,再執行?LEFT JOIN?...... ON?。

也就是第一步變成了執行??SELECT * ?FROM jobinfo AS j? WHERE? j.professionRequire='程序員'??

然后再進行連接查詢,也就是?

整個sql語句其實變成了:

SELECT * FROM userinfo AS u LEFT JOIN (SELECT * FROM jobinfo WHERE jobinfo.professionRequire='程序員') AS j ON u.userProfession=j.professionRequire

?這樣查詢出來,顯然不是我們想要的結果。

那么我們在使用?LEFT JOIN?...... ON??...... 拼接篩選條件時,我們應該怎么做?

配合 WHERE 使用:

SELECT * FROM userinfo AS u LEFT JOIN jobinfo AS j ON u.userProfession=j.professionRequire WHERE j.professionRequire='程序員'

結果:

我們把篩選條件配合where去使用, 執行的邏輯就是:

先執行LEFT JOIN?...... ON??...... ?先將關聯兩個表之后的數據查詢出來;

再按照?professionRequire='程序員'? ?條件,進行數據篩選。

所以這是我們想要得到的結果。

這是一個使用?LEFT JOIN 的 ON? 初學者很容易犯的錯誤,大家稍微注意點。

總結

以上是生活随笔為你收集整理的MySql 别犯糊涂了! LEFT JOIN 的 ON 后接上筛选条件,多个条件会出事!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。