SQL left join 与inner join的区别
时间: 2024-01-17 15:19:31 浏览: 184
SQL中的LEFT JOIN和INNER JOIN是两种常见的连接操作,它们之间有以下区别:
1. INNER JOIN(内连接):
- INNER JOIN返回两个表中匹配的行,即只返回两个表中连接列(ON子句指定的列)中具有相同值的行。
- 如果在一个表中没有匹配的行,则不会返回该行。
- INNER JOIN只返回满足连接条件的行。
2. LEFT JOIN(左连接):
- LEFT JOIN返回左表中的所有行,以及右表中与左表中的行匹配的行。
- 如果在右表中没有匹配的行,则返回NULL值。
- LEFT JOIN保留左表中的所有行,即使在右表中没有匹配的行。
下面是一个示例,演示了INNER JOIN和LEFT JOIN的区别:
假设我们有两个表A和B,它们的结构如下:
表A:
```
+------+--+
| aID | name |
+------+--+
| 1 | John |
| 2 | Mary |
| 3 | Bob |
+------+--+
```
表B:
```
+------+--+
| bID | age |
+------+--+
| 1 | 25 |
| 3 | 30 |
| 4 | 35 |
+------+--+
```
1. INNER JOIN示例:
```sql
SELECT *
FROM A
INNER JOIN B ON A.aID = B.bID;
```
结果:
```
+------+--+--+
| aID | name | age |
+------+--+--+
| 1 | John | 25 |
| 3 | Bob | 30 |
+------+--+--+
```
只返回在两个表中都有匹配的行。
2. LEFT JOIN示例:
```sql
SELECT *
FROM A
LEFT JOIN B ON A.aID = B.bID;
```
结果:
```
+------+--+--+
| aID | name | age |
+------+--+--+
| 1 | John | 25 |
| 2 | Mary | NULL |
| 3 | Bob | 30 |
+------+--+--+
```
返回左表A中的所有行,以及与左表A中的行匹配的右表B中的行。如果在右表B中没有匹配的行,则返回NULL值。
阅读全文