内连接,左连接,右连接怎么区别开来?
区分这三种连接其实非常简单核心就在于看**“谁的数据必须全部保留谁的数据没有匹配就要被过滤掉”**。为了让你彻底搞懂我们可以把user表用户和orders表订单想象成两个班级它们通过user_id这个学号来互相找朋友。 内连接 (INNER JOIN)只留“双向奔赴”的核心逻辑取交集。只有当两张表能完美匹配上时数据才会被保留。业务场景查“哪些用户下过单”。结果表现如果一个用户没下过单或者一个订单找不到对应的用户这两条数据都会被直接扔掉。口诀两边都有才算数。 左连接 (LEFT JOIN)保住“左边老大”的全部核心逻辑保左表。以FROM后面的左表为主不管右表有没有匹配左表的数据必须全部显示。如果右表没匹配上就用NULL空值来填充。业务场景查“所有用户的下单情况”哪怕他没买过东西也要把他的名字列出来。结果表现所有用户都会出现。张三下了两单就显示两行李四没下单他的订单字段就显示为NULL。口诀左边全都要右边随缘配。 右连接 (RIGHT JOIN)保住“右边小弟”的全部核心逻辑保右表。跟左连接完全相反以JOIN后面的右表为主不管左表有没有匹配右表的数据必须全部显示。左表没匹配上就填NULL。业务场景查“所有订单的归属人”哪怕系统里有找不到主人的异常脏数据订单也要把它列出来。结果表现所有订单都会出现。正常订单能匹配到用户名异常订单的用户名字段显示为NULL。口诀右边全都要左边随缘配。为了让你一眼看懂我们用一张表格来总结它们的区别假设左表是用户右表是订单连接类型核心作用没匹配上的数据怎么办实际开发常用度INNER JOIN只要两者都有的交集直接丢弃不出现在结果里⭐⭐⭐⭐⭐ (查精准关联数据)LEFT JOIN保住左表所有顺带查右表左表保留右表对应字段填NULL⭐⭐⭐⭐⭐ (最常用符合阅读习惯)RIGHT JOIN保住右表所有顺带查左表右表保留左表对应字段填NULL⭐ (极少用通常会被改写成左连接) 给你一个万能记忆法在实际写 SQL 时你只需要记住两点忘掉 RIGHT JOIN因为A RIGHT JOIN B等价于B LEFT JOIN A。只要你习惯把想保全的主表写在左边永远只用LEFT JOIN就能解决 99% 的外连接需求。看 ON 后面的条件INNER JOIN是严格的“门当户对”而LEFT/RIGHT JOIN则是“偏心”地保护某一边的数据完整性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2636995.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!