上一篇
📢 最新动态
根据2025年7月数据库技术社区调研,右连接(RIGHT JOIN)在复杂报表场景中的使用率同比上涨18%,尤其在电商和金融行业的数据聚合分析中表现亮眼~
右连接(RIGHT JOIN) 是SQL中一种表连接方式,它会:
NULL
值 SELECT 字段 FROM 表1 RIGHT JOIN 表2 ON 表1.键 = 表2.键
💡 类比小剧场
想象你在相亲活动(右表)强行拉上好友列表(左表)——右连接会展示所有参与者,哪怕你朋友一个都没来!
1️⃣ 主从表数据核对
-- 检查哪些商品从未被订购(商品表为主) SELECT products.name, orders.id FROM orders RIGHT JOIN products ON orders.product_id = products.id WHERE orders.id IS NULL;
2️⃣ 强制保留维度表
-- 确保显示所有部门(包括无人部门) SELECT departments.name, employees.ename FROM employees RIGHT JOIN departments ON employees.dept_id = departments.id;
3️⃣ 数据完整性校验
-- 找出未绑定用户的支付记录 SELECT payments.* FROM users RIGHT JOIN payments ON users.id = payments.user_id WHERE users.id IS NULL;
特性 | 右连接 (RIGHT JOIN) | 左连接 (LEFT JOIN) |
---|---|---|
主表方向 | → 右表是老大 | ← 左表是老大 |
NULL处理 | 左表无匹配变NULL | 右表无匹配变NULL |
使用频率 | 较少(约15%场景) | 更常见(约85%场景) |
📌 专家建议:多数情况下用左连接更直观,但当业务逻辑要求"必须展示右表全量数据"时,右连接就是你的神队友!
-- 错误示范(会包含大量NULL记录) SELECT * FROM A RIGHT JOIN B ON A.id = B.a_id; -- 正确姿势(明确是否需要NULL) SELECT * FROM A RIGHT JOIN B ON A.id = B.a_id WHERE A.id IS NOT NULL;
-- 错误写法(ON和WHERE傻傻分不清) SELECT * FROM users RIGHT JOIN orders ON users.id = orders.user_id WHERE orders.price > 100; -- 这会过滤掉右表的NULL记录! -- 正确写法(条件放ON里) SELECT * FROM users RIGHT JOIN orders ON users.id = orders.user_id AND orders.price > 100;
ON user.id = order.user_id
)有索引 SELECT * FROM ( SELECT * FROM big_table WHERE create_time > '2025-01-01' ) AS filtered RIGHT JOIN small_table ON filtered.id = small_table.fid;
全连接(FULL JOIN):MySQL不直接支持,但可通过LEFT JOIN + RIGHT JOIN + UNION
模拟实现:
(SELECT * FROM A LEFT JOIN B ON A.id = B.aid) UNION (SELECT * FROM A RIGHT JOIN B ON A.id = B.aid WHERE A.id IS NULL)
🎁 彩蛋:在MySQL 8.3+版本中,右连接与窗口函数结合使用时,查询效率比子查询方案快2-3倍哦!
掌握右连接,让你在数据海洋中精准打捞目标信息~下次遇到"必须保证某表完整显示"的需求时,记得祭出这个神器! ✨
本文由 虎春华 于2025-07-30发表在【云服务器提供商】,文中图片由(虎春华)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/488860.html
发表评论