MySQL中左連接和右連接的區(qū)別舉例詳解
1. 概述
MySQL中的左連接(LEFT JOIN)和右連接(RIGHT JOIN)是兩種外連接方式,核心區(qū)別在于保留哪個表的全部數(shù)據(jù)。左連接以左表為主,右連接以右表為主。兩者本質(zhì)對稱,實際選擇取決于數(shù)據(jù)需求和查詢可讀性。
2. 理論說明
以左連接(LEFT JOIN)為例說明,右連接同理:
- 保留左表所有行:無論右表是否有匹配,左表的所有記錄都會顯示。
- 右表無匹配時填充NULL:若右表無匹配數(shù)據(jù),結(jié)果中右表對應(yīng)的字段值為NULL。
- 語法示例:
SELECT * FROM 左表 LEFT JOIN 右表 ON 左表.字段 = 右表.字段;
左連接和右連接可相互轉(zhuǎn)換,通過調(diào)整表順序?qū)崿F(xiàn)相同效果:
A LEFT JOIN B = B RIGHT JOIN A
3. 舉例說明
- 左連接結(jié)果(A LEFT JOIN B):
保留所有學(xué)生,未匹配的訂單為NULL。
id | name | product 1 | Alice | 蘋果 2 | Bob | NULL 3 | Charlie| 香蕉
- 右連接結(jié)果(A RIGHT JOIN B):
保留所有訂單,未匹配的學(xué)生為NULL。
id | name | product 1 | Alice | 蘋果 3 | Charlie| 香蕉 NULL | NULL | 橘子
關(guān)鍵注意事項:
1)ON條件與WHERE過濾:ON子句影響連接時的匹配邏輯,不滿足條件的右表行會被設(shè)為NULL,但左表行仍保留(左連接)。
2)WHERE子句在連接后過濾,可能導(dǎo)致排除左/右表的NULL行(失去外連接意義)。
總結(jié)
到此這篇關(guān)于MySQL中左連接和右連接區(qū)別的文章就介紹到這了,更多相關(guān)MySQL左連接和右連接區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于MySql 10038錯誤的完美解決方法(三種)
本文給大家?guī)砣N有關(guān)mysql報10038錯誤的解決方法,每種方法都非常不錯,需要的朋友參考下2016-09-09Explain命令在優(yōu)化查詢中的實際應(yīng)用
在MySQL中,EXPLAIN命令是一種非常重要的查詢優(yōu)化工具,它可以幫助我們分析SQL查詢語句的執(zhí)行計劃,以及如何優(yōu)化它們。本文介紹了Explain命令在優(yōu)化查詢中的實際應(yīng)用,感興趣的小伙伴可以參考閱讀2023-04-04SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法
由于是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那么怎樣才能按照我們預(yù)想的數(shù)字順序排序呢2013-03-03解決mysql出現(xiàn)錯誤:ERROR?1046?(3D000):No?database?selected
這篇文章主要給大家介紹了關(guān)于解決mysql出現(xiàn)錯誤:ERROR?1046?(3D000):No?database?selected的相關(guān)資料,No database selected可以理解為沒有選擇種數(shù)據(jù)庫,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2024-01-01linux安裝兩個mysql(8.0和5.7),并同時使用方式
這篇文章主要介紹了如何在CentOS?7上下載和安裝MySQL?8.0和MySQL?5.7.30,并詳細描述了安裝步驟,包括解壓、配置、初始化和啟動等過程2024-12-12