sql如何实现连接查询
时间: 2024-01-27 20:05:46 浏览: 39
SQL中可以使用JOIN语句来实现连接查询,JOIN语句是将两个或多个表中的记录联接起来,从而得到一个新的结果集。常见的JOIN有以下几种类型:
1. INNER JOIN:只返回两个表中匹配的行。
2. LEFT JOIN:返回左表中所有的行,以及右表中与左表匹配的行,右表中没有匹配的行则返回NULL值。
3. RIGHT JOIN:返回右表中所有的行,以及左表中与右表匹配的行,左表中没有匹配的行则返回NULL值。
4. FULL OUTER JOIN:返回两个表中所有的行,如果没有匹配的行则返回NULL值。
例如,我们有两个表A和B,它们的结构如下:
A表:
| id | name | age |
|----|------|-----|
| 1 | Tom | 20 |
| 2 | Jack | 22 |
| 3 | Lucy | 18 |
B表:
| id | job | salary |
|----|-----------|--------|
| 1 | Programmer | 5000 |
| 2 | Manager | 8000 |
| 4 | Salesman | 3000 |
现在我们想要查询这两个表中id相同的记录,可以使用INNER JOIN语句:
```
SELECT A.id, A.name, B.job, B.salary
FROM A
INNER JOIN B ON A.id = B.id;
```
结果如下:
| id | name | job | salary |
|----|------|-----------|--------|
| 1 | Tom | Programmer | 5000 |
| 2 | Jack | Manager | 8000 |
可以看到,只有id为1和2的记录匹配。如果使用LEFT JOIN语句:
```
SELECT A.id, A.name, B.job, B.salary
FROM A
LEFT JOIN B ON A.id = B.id;
```
结果如下:
| id | name | job | salary |
|----|------|-----------|--------|
| 1 | Tom | Programmer | 5000 |
| 2 | Jack | Manager | 8000 |
| 3 | Lucy | NULL | NULL |
可以看到,左表A中所有的记录都被保留下来了,右表B中没有匹配的记录用NULL值填充。同理,可以使用RIGHT JOIN或FULL OUTER JOIN来实现右连接或全外连接。