
[498]left join、inner join、right join的区别
发布日期:2021-05-16 09:28:46
浏览次数:17
分类:精选文章
本文共 1615 字,大约阅读时间需要 5 分钟。
SQL 左联接、右联接与内联接的区别
在SQL中,左联接(Left Join)、右联接(Right Join)和内联接(Inner Join)是常用的三种join操作方式。以下是它们的主要区别及使用场景。
1. 左联接(Left Join)
- 特点:左联接会返回左表中的所有记录,与右表中有交集的部分。
- 结果:结果集包含左表的所有记录,只有当右表中存在与左表匹配的值时,才会返回对应的右表记录。
- 用途:当你希望保留左表所有数据时,左联接是适合的选择。
2. 右联接(Right Join)
- 特点:右联接会返回右表中的所有记录,与左表中有交集的部分。
- 结果:结果集包含右表的所有记录,只有当左表中存在与右表匹配的值时,才会返回对应的左表记录。
- 用途:当你希望保留右表所有数据时,右联接是你的最佳选择。
3. 内联接(Inner Join)
- 特点:内联接仅返回两个表中同时满足联结条件的记录。
- 结果:只包含两个表中有交集的那些行。
- 用途:当你需要同时满足两个表的条件时,内联接是一个有效的选择。
4. 示例说明
假设有如下两个表:t_user
和 t_class
,字段为t_user.UserID
与t_class.id
相互匹配。
-
左联接:
SELECT u.UserID, u.UserName, c.id, c.name FROM t_user u LEFT JOIN t_class c ON c.id = u.UserID
Running结果:包含左表全部信息(即所有用户记录),并与右表匹配的部分连接。
-
右联接:
SELECT u.UserID, u.UserName, c.id, c.name FROM t_user u RIGHT JOIN t_class c ON c.id = u.UserID
Running结果:包含右表全部信息(即所有班级记录),并与左表匹配的部分连接。
-
内联接:
SELECT u.UserID, u.UserName, c.id, c.name FROM t_user u INNER JOIN t_class c ON c.id = u.UserID
Running结果:仅包含两个表中有交集的记录,即既存在于左表又存在于右表的用户-班级对应关系。
5. 虚拟表的更新应用
在实际操作中,构建虚拟表以实现更新时需要特别注意:
UPDATE dmdc.bond_issuser_rela_detail c INNER JOIN (SELECT DISTINCT a.com_uni_code, a.com_chi_name, b.com_uni_code as code2, b.com_chi_name as name2 FROM dmdc.bond_issuser_rela_detail a LEFT JOIN dmdc.t_com_info b ON a.com_chi_name = b.com_chi_name WHERE a.com_uni_code IS NULL AND b.com_uni_code IS NOT NULL ORDER BY b.com_uni_code) d ON d.com_chi_name = c.com_chi_name SET c.com_uni_code = d.code2
这一操作通过联接构建虚拟表,并在虚拟表的基础上执行更新操作,确保更新语句独立且安全。
6. 注意事项
- 虚拟表依赖性:在使用内联接构建虚拟表时,子查询的结果不会直接影响原表数据,确保操作的安全性。
- 性能考虑:大规模数据处理时,避免不必要的联接操作,以防性能下降。
- 表结构选择:确保联接的字段在两个表中具有相同的数据类型和约束条件,以防SQL错误。
通过理清以上概念和应用场景,你可以更高效地使用SQL进行数据操作,充分发挥数据库性能。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月28日 08时25分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Qt 在Excel文件中Chart绘图
2019-03-17
01-webpack5理解及配置
2019-03-17
webpack的安装和使用
2019-03-17
Vue.js学习-15-v-for循环数组内容
2019-03-17
kafka超时错误或者发送消息失败等错误,排错方式
2019-03-17
sockjs-node/info?t=1462183700002 报错解决方案
2019-03-17
FI 替代相关 OSS Note 要点记录
2019-03-17
蓝桥杯---试题 算法提高 欧拉函数(数学)
2019-03-17
网络协议和支持(一)、uuid模块
2019-03-17
numpy.frombuffer()
2019-03-17
文件结束符EOF
2019-03-17
Latex 错误集合
2019-03-17
Python的内置函数(四十一)、 index()
2019-03-17
Python字符串操作之字符串分割与组合
2019-03-17
tf.tuple
2019-03-17
windows系统配置自动tomcat
2019-03-17