写SQL时,LEFT JOIN和RIGHT JOIN的区别你真的清楚吗?很多人以为这是三种不同的连接方式,其实它们都隶属于同一个"家族"——外连接。真正独立的只有两种:内连接和外连接。
这个分类逻辑很纯粹:看哪些行能进结果集,以及哪张表的"落单行"被保留。内连接求的是交集,匹配不上的两边都不要;外连接则专门收留那些落单的记录。除此之外,没有第三种底层逻辑。
![]()
外连接往下再分三个方向。LEFT保留左表全部行,RIGHT保留右表全部行,FULL则是两边全要。三者的核心机制完全一致,区别只在"保哪边"。GBase 8a这类遵循SQL标准的数据库,查询引擎里就是这么划分的。
![]()
实际写查询时,这个层级关系能帮你少犯错。一旦确定用外连接,必须立刻想清楚方向——左、右还是全?但内连接没这烦恼,它本身就是完整规格,不需要二次选择。
![]()
很多性能问题或数据遗漏,根子都在这里:该用内连接时用了外连接,或者外连接的方向选反了。理解这套分类 hierarchy,比死记语法更重要。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.