国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

2024-07-24 13:08:52
字體:
供稿:網(wǎng)友
這篇文章主要介紹了MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法,針對右表符合條件表達(dá)式的記錄數(shù)大于1條時left join所顯示的結(jié)果需求來講,需要的朋友可以參考下
 

1.left join 基本用法

mysql left join 語句格式
A LEFT JOIN B ON 條件表達(dá)式

left join 是以A表為基礎(chǔ),A表即左表,B表即右表。
左表(A)的記錄會全部顯示,而右表(B)只會顯示符合條件表達(dá)式的記錄,如果在右表(B)中沒有符合條件的記錄,則記錄不足的地方為NULL。

例如:news 與 news_category表的結(jié)構(gòu)如下,news表的category_id與news_category表的id是對應(yīng)關(guān)系。

news 表

MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

 

news_category 表

MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

 

顯示news表記錄,并顯示news的category名稱,查詢語句如下

select a.id,a.title,b.name as category_name,a.content,a.addtime,a.lastmodify  from news as a left join news_category as b  on a.category_id = b.id; 

查詢結(jié)果如下:

MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

因 news_category 表沒有id=4的記錄,因此news 表中category_id=4的記錄的category_name=NULL

使用left join, A表與B表所顯示的記錄數(shù)為 1:1 或 1:0,A表的所有記錄都會顯示,B表只顯示符合條件的記錄。

2.left join 右表數(shù)據(jù)不唯一解決方法

但如果B表符合條件的記錄數(shù)大于1條,就會出現(xiàn)1:n的情況,這樣left join后的結(jié)果,記錄數(shù)會多于A表的記錄數(shù)。

例如:member與member_login_log表的結(jié)構(gòu)如下,member記錄會員信息,member_login_log記錄會員每日的登入記錄。member表的id與member_login_log表的uid是對應(yīng)關(guān)系。

member 表

MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

 

member_login_log 表

MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

 

查詢member用戶的資料及最后登入日期:
如果直接使用left join

select a.id, a.username, b.logindate from member as a  left join member_login_log as b on a.id = b.uid; 

因member_login_log符合條件的記錄比member表多(a.id = b.uid),所以最后得出的記錄為:

MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

 

但這并不是我們要的結(jié)果,因此這種情況需要保證B表的符合條件的記錄是空或唯一,我們可以使用group by來實現(xiàn)。

select a.id, a.username, b.logindate from member as a  left join (select uid, max(logindate) as logindate from member_login_log group by uid) as b on a.id = b.uid; 

MySQL在右表數(shù)據(jù)不唯一的情況下使用left join的方法

 

總結(jié):使用left join的兩個表,最好是1:1 或 1:0的關(guān)系,這樣可以保證A表的記錄全部顯示,B表顯示符合條件的記錄。
如果B表符合條件的記錄不唯一,就需要檢查表設(shè)計是否合理了。



注:相關(guān)教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沈丘县| 麦盖提县| 忻城县| 博白县| 天门市| 汨罗市| 隆回县| 日喀则市| 沁源县| 胶州市| 高台县| 西林县| 韶关市| 武乡县| 英德市| 旺苍县| 江北区| 乐亭县| 洛浦县| 城口县| 新丰县| 乐亭县| 根河市| 安福县| 进贤县| 石狮市| 河间市| 大竹县| 闽侯县| 马龙县| 洪雅县| 塔城市| 吉安市| 收藏| 抚松县| 凤城市| 乌鲁木齐县| 勃利县| 嘉义县| 临城县| 海安县|