- SQL教程
- SQL - 主页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL数据库
- SQL-创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL-备份数据库
- SQL表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 更改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - 选择进入
- SQL - 插入选择
- SQL - 更新查询
- SQL - 删除查询
- SQL - 对结果进行排序
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL-Where 子句
- SQL - 顶部子句
- SQL - 不同子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL-Having 子句
- SQL - 与与或
- SQL - 布尔(位)运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY、ALL 运算符
- SQL - EXISTS 运算符
- SQL-案例
- SQL - NOT 运算符
- SQL - 不等于
- SQL - 为空
- SQL - 不为空
- SQL - 非空
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION 与 UNION ALL
- SQL - 相交运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用联接
- SQL-内连接
- SQL-左连接
- SQL-右连接
- SQL-交叉连接
- SQL-全连接
- SQL-自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接与右连接
- SQL - 联合与连接
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL-外键
- SQL - 复合键
- SQL - 备用键
- SQL索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL-唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高级SQL
- SQL - 通配符
- SQL - 注释
- SQL-注入
- SQL-托管
- SQL - 最小值和最大值
- SQL - 空函数
- SQL - 检查约束
- SQL - 默认约束
- SQL-存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL-自动递增
- SQL - 日期和时间
- SQL-游标
- SQL - 公用表表达式
- SQL - 分组依据与排序依据
- SQL - IN 与 EXISTS
- SQL——数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数字函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL-JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问题与解答
- SQL - 快速指南
- SQL - 有用的函数
- SQL - 有用的资源
- SQL - 讨论
左连接与右连接
左连接和右连接之间的主要区别可以在表的连接方式上观察到。
它们都是外连接的类型;也就是说,它们保留一个表中不匹配的行,并丢弃另一个表中不匹配的行。左连接保留左表不匹配的行,右连接保留右表不匹配的行。
左连接的工作
SQL 中的Left Join或Left Outer Join组合两个或多个表,其中第一个表按原样返回;但是,只有在第一个表中具有对应项的记录才会从后续表中返回。
如果 ON 子句将后续表中的零条记录与第一个表中的行匹配,则左连接仍将在结果中返回第一个表中的这些行,但右表中的每一列中都包含 NULL。
句法
以下是 SQL 中 Left Join 的基本语法 -
SELECT table1.column1, table2.column2... FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
例子
下面的示例演示了两个相关表上的 Left Join 操作。这里,第一个表包含工资信息,第二个表包含婚姻状况信息。由于Alex的状态未知,因此没有记录在表中。
当使用 Left Join 查询连接两个表时,由于没有与 Alex 的 Status 匹配的记录,因此该值在最终表中记录为 NULL。
右连接的工作
SQL 中的右联接或右外联接查询会返回右表中的所有行,即使左表中没有匹配项也是如此。这意味着如果 ON 子句将左表中的 0(零)条记录与右表中的记录匹配;右连接仍将在结果中返回右表的行,但左表的每一列中都有 NULL 值。
句法
以下是 SQL 中右连接的基本语法 -
SELECT table1.column1, table2.column2... FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
例子
现在,在此示例中,对相同的表执行 Right Join 操作。在这里,我们从右表开始连接;因为右表不包含与 Alex 的行匹配的记录值,所以该行从最终表中被丢弃。
最终表仅包含两行,因为右表仅包含两行。
左连接与右连接
让我们在下表中总结一下左连接和右连接之间的所有区别 -
左连接 | 右连接 |
---|---|
Left Join 将第一个表或左表的数据与第二个表中的数据进行匹配。如果数据匹配,则合并记录;否则记录NULL。 | Right Join 将第二个表或右表的数据与第一个表中的数据进行匹配。如果数据匹配,则合并记录;否则记录NULL。 |
如果第一个表的行数少于第二个表的行数,则第二个表中多余的不匹配行将被丢弃。 | 如果第二个表的行数少于第一个表的行数,则第一个表中多余的不匹配行将被丢弃。 |
此连接也称为左外连接 | 此连接也称为右外连接 |
*= 在 Transact SQL 中使用,而不是使用 LEFT JOIN 或 LEFT OUTER JOIN 查询。 | =* 用于 Transact SQL,而不是使用 RIGHT JOIN 或 RIGHT OUTER JOIN 查询。 |
正如我们从摘要中可以观察到的,左连接和右连接之间没有很大的差异。它们之间的每一个差异都归零到表的连接方式和连接角度。