left join 与inner join 区别
时间: 2023-06-05 22:48:02 浏览: 133
left join 和 inner join 都是 SQL 中的连接查询语句,它们的区别在于:
1. left join 返回左表中所有记录以及右表中与左表匹配的记录,如果右表中没有匹配的记录,则返回 NULL 值。而 inner join 只返回左右表中都有匹配的记录。
2. left join 可以用来查找左表中的记录以及与之关联的右表中的记录,即使右表中没有匹配的记录。而 inner join 只返回左右表中都有匹配的记录。
3. left join 可以用来查找左表中的所有记录,即使右表中没有匹配的记录。而 inner join 只返回左右表中都有匹配的记录。
总之,left join 和 inner join 的区别在于 left 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值。
阅读全文
相关推荐














