上一篇
场景引入:
假设你在一家电商公司工作,市场部同事跑过来问:“能不能帮我查一下所有用户的下单记录?包括那些还没下单的会员!”——这时候,左连接(LEFT JOIN)就该登场了,而如果财务部需要“只统计有付款记录的订单用户”,右连接(RIGHT JOIN)或许更合适。
MySQL中的左右连接属于表连接查询,核心目的是将多张表的数据关联起来,它们的区别就像名字一样直观:
📌 实际开发中左连接更常用,因为SQL语句通常从左向右阅读,逻辑更自然。
我们用两个表做例子:
users
用户表:user_id
, user_name
orders
订单表:order_id
, user_id
, amount
SELECT u.user_id, u.user_name, o.order_id, o.amount FROM users u LEFT JOIN orders o ON u.user_id = o.user_id;
效果:即使用户没有订单,也会显示用户信息,订单字段为NULL。
SELECT u.user_id, u.user_name, o.order_id, o.amount FROM users u RIGHT JOIN orders o ON u.user_id = o.user_id;
效果:如果订单关联的用户ID在用户表中不存在,用户字段显示NULL。
左连接后过滤NULL值即可:
SELECT u.user_id, u.user_name FROM users u LEFT JOIN orders o ON u.user_id = o.user_id WHERE o.order_id IS NULL;
能!通过调换表顺序实现相同效果:
-- 左连接写法 SELECT * FROM A LEFT JOIN B ON A.id = B.a_id; -- 等效的右连接写法 SELECT * FROM B RIGHT JOIN A ON B.a_id = A.id;
user_id
) 连接类型 | 核心逻辑 | 典型场景 |
---|---|---|
LEFT JOIN | 左表全保留,右表匹配补NULL | 查主表数据及关联的辅助信息 |
RIGHT JOIN | 右表全保留,左表匹配补NULL | 较少使用,可用左连接+调换表替代 |
下次遇到“我要全部A,不管B有没有”的需求时,记得左连接是你的好帮手!
本文由 乌痴瑶 于2025-08-01发表在【云服务器提供商】,文中图片由(乌痴瑶)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/501909.html
发表评论