sql左连接和右连接

首先,左连接和右连接指的都是外连接

外连接的情况指一个表中有一个字段是另一个表的主键时

比如商品表里除了商品id还有一个分类id名为cid,这个cid就是商品分类表的主键,我们需要一起查询这两个表的内容,通过分类id把两个表联系起来就是外连接

至于左连接和右连接的区别在于写法上先写哪个表就称之为左,商品表中有的商品分类id(cid)为空,分类表中也有分类在商品中没有出现过时

如果是左连接,商品表中就算商品分类为空的商品也会被查出,而分类表中只出现在商品表中出现的分类

如果是右连接,则相反…

转载:https://www.cnblogs.com/fengnan/p/9403315.html

### SQL左连接(LEFT JOIN)与连接(RIGHT JOIN)的区别及使用场景 #### 一、定义与区别 1. **LEFT JOIN(左连接)** 左连接返回左表中的所有记录,即使表中没有匹配的记录。如果表中没有匹配的记录,则结果集中表的部分会填充为NULL值。这种连接方式以左表为主,确保左表的所有记录都被保留[^1]。 2. **RIGHT JOIN(连接)** 连接返回表中的所有记录,即使左表中没有匹配的记录。如果左表中没有匹配的记录,则结果集中左表的部分会填充为NULL值。这种连接方式以表为主,确保表的所有记录都被保留[^1]。 3. **主要区别** - LEFT JOIN关注的是左表的所有记录,而RIGHT JOIN关注的是表的所有记录。 - 在结果集中,LEFT JOIN会在表无匹配时用NULL填充,RIGHT JOIN则在左表无匹配时用NULL填充[^3]。 #### 二、语法示例 以下是LEFT JOINRIGHT JOIN的基本语法: ```sql -- LEFT JOIN 示例 SELECT * FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id; -- RIGHT JOIN 示例 SELECT * FROM table1 t1 RIGHT JOIN table2 t2 ON t1.id = t2.id; ``` #### 三、使用场景 1. **LEFT JOIN 的使用场景** - 当需要获取左表的所有记录,并且希望了解哪些记录在表中不存在时,可以使用LEFT JOIN。例如,查询所有学生信息以及他们所属的班级信息,即使某些学生未分配班级[^5]。 2. **RIGHT JOIN 的使用场景** - 当需要获取表的所有记录,并且希望了解哪些记录在左表中不存在时,可以使用RIGHT JOIN。例如,查询所有班级信息以及每个班级的学生信息,即使某些班级暂时没有学生[^5]。 #### 四、注意事项 - 在实际开发中,RIGHT JOIN的使用频率较低,因为可以通过调整表的位置来实现相同的效果。例如,将RIGHT JOIN改为LEFT JOIN,同时交换左表的位置[^4]。 - 如果只需要获取两个表的交集部分,可以使用INNER JOIN。 #### 五、代码示例 以下是一个具体的SQL查询示例,展示LEFT JOINRIGHT JOIN的结果差异: ```sql -- 假设有两张表:id1 (id, height) id2 (id, weight) -- LEFT JOIN 示例 SELECT id1.id, id1.height, id2.weight FROM id1 LEFT JOIN id2 ON id1.id = id2.id; -- RIGHT JOIN 示例 SELECT id1.id, id1.height, id2.weight FROM id1 RIGHT JOIN id2 ON id1.id = id2.id; ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值