left join 与inner join 区别
时间: 2023-10-22 08:07:11 浏览: 64
Left join 和 inner join 是 SQL 中两种不同的连接方式,它们的区别如下:
1. Left join(左连接):左连接返回左表中所有的行和右表中匹配的行,如果右表中没有与左表匹配的行,则返回空值(NULL)。
2. Inner join(内连接):内连接返回左表和右表中都有匹配的行。
总的来说,left join 比 inner join 更宽松一些,因为它会返回左表中所有的行,而不仅仅是匹配的行。而 inner join 则更加严格,只返回左表和右表中都有匹配的行。因此,在使用这两种连接方式时,需要根据具体需求选择合适的方式。
相关问题
left join与inner join的区别
`LEFT JOIN` 和 `INNER JOIN` 是 SQL 中常用的两种连接(join)操作。
`INNER JOIN` 是将两个表中满足连接条件的记录进行匹配,返回满足条件的交集部分。只有在两个表中都存在匹配的记录时,才会被包含在结果集中。
`LEFT JOIN` 则是将左边的表中的所有记录都包含在结果集中,而不仅仅是满足连接条件的记录。如果右边的表中没有与左边表匹配的记录,则右边表中的字段将填充为 NULL。
简而言之,区别在于 `INNER JOIN` 返回两个表中共有匹配的记录,而 `LEFT JOIN` 返回左表中的全部记录以及与之匹配的右表中的记录(如果有的话)。
例如,假设有两个表 A 和 B:
表 A:
```
| id | name |
|----|------|
| 1 | Bob |
| 2 | Alice|
| 3 | John |
```
表 B:
```
| id | salary |
|----|--------|
| 1 | 5000 |
| 4 | 6000 |
```
使用 `INNER JOIN` 的结果为:
```
| id | name | salary |
|----|------|--------|
| 1 | Bob | 5000 |
```
使用 `LEFT JOIN` 的结果为:
```
| id | name | salary |
|----|------|--------|
| 1 | Bob | 5000 |
| 2 | Alice| NULL |
| 3 | John | NULL |
```
以上是 `LEFT JOIN` 和 `INNER JOIN` 的基本区别,希望能对你有所帮助。如果还有其他问题,请继续提问。
SQL left join 与inner join的区别
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值。
阅读全文
相关推荐

















