LEFT JOIN 和 INNER JOIN 的区别
时间: 2023-07-23 20:09:52 浏览: 72
SQL之left join、right join、inner join的区别浅析
LEFT JOIN 和 INNER JOIN 是 SQL 中的两种不同的 JOIN 操作。
INNER JOIN 返回两个表中都存在的匹配行,即只返回两个表中都有匹配的数据行。如果某个表中没有匹配的数据行,则该表中的数据行不会出现在结果集中。
而 LEFT JOIN 则返回左边表中所有的数据行,以及右边表中与左边表中数据行匹配的数据行。如果右边表中没有匹配的数据行,则返回 NULL 值。
简单来说,INNER JOIN 只返回两个表中都存在的数据行,而 LEFT JOIN 则会返回左边表中所有的数据行,不论右边表中是否存在匹配的数据行。
举个例子,假设有两个表 A 和 B:
A 表:
| ID | NAME |
|----|------|
| 1 | Tom |
| 2 | Jack |
| 3 | Bob |
B 表:
| ID | AGE |
|----|-----|
| 1 | 20 |
| 2 | 25 |
如果使用 INNER JOIN,执行以下 SQL 语句:
```
SELECT A.ID, A.NAME, B.AGE
FROM A
INNER JOIN B
ON A.ID = B.ID;
```
则结果集为:
| ID | NAME | AGE |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Jack | 25 |
因为只有 ID 为 1 和 2 的数据行在两个表中都存在。
如果使用 LEFT JOIN,执行以下 SQL 语句:
```
SELECT A.ID, A.NAME, B.AGE
FROM A
LEFT JOIN B
ON A.ID = B.ID;
```
则结果集为:
| ID | NAME | AGE |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Jack | 25 |
| 3 | Bob | NULL|
因为左边表 A 中的所有数据行都会出现在结果集中,右边表 B 中没有匹配的数据行会显示为 NULL。
阅读全文