Left Join 与 Inner Join 的区别

热门职校 2024-11-10 09:51:49

在 SQL 查询中,Join 操作用于将来自不同表的数据行组合在一起。Left Join 和 Inner Join 是两种最常见的 Join 类型,它们在数据检索方面的行为有所不同。

Left Join 与 Inner Join 的区别Left Join 与 Inner Join 的区别


Left Join

Left Join 会返回匹配行以及目标表中所有行,即使在源表中没有匹配项。换句话说,它保留了目标表中的所有记录,即使它们在源表中没有对应的记录。

语法:

```sql SELECT ... FROM table1 LEFT JOIN table2 ON table1.id = table2.id; ```

效果:

返回匹配的行 返回目标表中的所有行,即使它们在源表中没有匹配项

Inner Join

Inner Join 仅返回具有匹配行的行。如果在源表或目标表中没有匹配项,则会删除该行。

语法:

```sql SELECT ... FROM table1 INNER JOIN table2 ON table1.id = table2.id; ```

效果:

仅返回匹配的行 删除目标表中没有匹配行的行

比较

| 特征 | Left Join | Inner Join | |---|---|---| | 匹配行 | 返回匹配行和目标表中所有行 | 仅返回匹配行 | | 空值 | 保留目标表中的空值 | 删除目标表中的空值 | | 数据完整性 | 可能导致目标表中出现重复数据 | 保证数据完整性,不会出现重复数据 |

选择 Left Join 或 Inner Join

选择使用 Left Join 还是 Inner Join 取决于数据检索的特定需求:

如果需要完整的数据集,包括匹配和不匹配的行,请使用 Left Join。 如果仅需要匹配的行并且需要保证数据完整性,请使用 Inner Join。

示例

考虑以下示例表:

| table1 | table2 | |---|---| | 1 | A | | 2 | B | | 3 | C | | 4 | D |

左联接查询:

```sql SELECT FROM table1 LEFT JOIN table2 ON table1.id = table2.id; ```

输出:

| id | name | |---|---| | 1 | A | | 2 | B | | 3 | C | | 4 | D | | NULL | NULL |

此查询返回所有 table1 行,即使 table2 中没有匹配项。

内连接查询:

```sql SELECT FROM table1 INNER JOIN table2 ON table1.id = table2.id; ```

输出:

| id | name | |---|---| | 1 | A | | 2 | B |

版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。