sql中左右关联的区别
时间: 2024-04-08 21:33:44 浏览: 14
在 SQL 中,左连接(left join)和右连接(right join)都属于外连接(outer join)的一种。它们在连接两个表时的操作顺序和结果集的方向不同。
左连接(left join)返回左表中所有的记录,以及与右表中匹配的记录。如果右表中没有匹配的记录,对应的结果将显示为 NULL。
右连接(right join)则与左连接相反,返回右表中所有的记录,以及与左表中匹配的记录。如果左表中没有匹配的记录,对应的结果将显示为 NULL。
下面是一个简单的例子来说明左连接和右连接的区别。假设有两个表:学生表(students)和成绩表(scores)。
学生表(students):
```
+------+-------+
| id | name |
+------+-------+
| 1 | Alice |
| 2 | Bob |
| 3 | Carl |
+------+-------+
```
成绩表(scores):
```
+------+-------+--------+
| id | score | subject|
+------+-------+--------+
| 1 | 85 | Math |
| 2 | 90 | Math |
| 3 | 75 | English|
+------+-------+--------+
```
左连接查询语句:
```sql
SELECT students.name, scores.score
FROM students
LEFT JOIN scores ON students.id = scores.id;
```
结果:
```
+-------+-------+
| name | score |
+-------+-------+
| Alice | 85 |
| Bob | 90 |
| Carl | 75 |
+-------+-------+
```
右连接查询语句:
```sql
SELECT students.name, scores.score
FROM students
RIGHT JOIN scores ON students.id = scores.id;
```
结果:
```
+-------+-------+
| name | score |
+-------+-------+
| Alice | 85 |
| Bob | 90 |
| NULL | 75 |
+-------+-------+
```
可以看到,左连接返回所有学生的记录,而右连接返回所有成绩的记录,对应的学生不存在时显示为 NULL。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)