mysql中左连接和右连接的却别
时间: 2024-06-12 11:10:29 浏览: 83
左连接和右连接都是外连接,它们的区别在于连接的方向不同。左连接以左表为基础,将左表中的所有记录和右表中符合条件的记录连接起来,如果右表中没有符合条件的记录,则用 NULL 填充。右连接则以右表为基础,将右表中的所有记录和左表中符合条件的记录连接起来,如果左表中没有符合条件的记录,则用 NULL 填充。
举个例子,假设有两个表 A 和 B,它们的结构如下:
A 表:
| id | name |
|----|------|
| 1 | Tom |
| 2 | Jack |
| 3 | Lucy |
B 表:
| id | age |
|----|-----|
| 1 | 20 |
| 2 | 25 |
| 4 | 30 |
如果我们使用左连接查询 A 表和 B 表的数据,查询语句如下:
```
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 | Lucy | NULL|
可以看到,左连接以 A 表为基础,将 A 表中的所有记录和 B 表中符合条件的记录连接起来,如果 B 表中没有符合条件的记录,则用 NULL 填充。
如果我们使用右连接查询 A 表和 B 表的数据,查询语句如下:
```
SELECT A.id, A.name, B.age
FROM A
RIGHT JOIN B
ON A.id = B.id;
```
查询结果如下:
| id | name | age |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Jack | 25 |
| NULL | NULL | 30 |
可以看到,右连接以 B 表为基础,将 B 表中的所有记录和 A 表中符合条件的记录连接起来,如果 A 表中没有符合条件的记录,则用 NULL 填充。
阅读全文