left join举个例子
时间: 2023-10-11 19:13:32 浏览: 32
假设我们有两个表格,一个是`students`,另一个是`grades`,如下:
`students`表格:
| id | name | age |
| --- | ------ | --- |
| 1 | Alice | 20 |
| 2 | Bob | 21 |
| 3 | Claire | 19 |
| 4 | David | 22 |
`grades`表格:
| id | student_id | course | grade |
| --- | ----------| ------ | ----- |
| 1 | 1 | Math | 85 |
| 2 | 1 | Science| 92 |
| 3 | 2 | Math | 78 |
| 4 | 3 | Science| 89 |
| 5 | 4 | Math | 95 |
| 6 | 4 | Science| 87 |
现在我们想要将这两个表格合并,但只保留`students`表格中所有的行,而`grades`表格中只保留与`students`表格中匹配的行,那么我们可以使用`left join`,如下:
```
SELECT students.*, grades.course, grades.grade
FROM students
LEFT JOIN grades ON students.id = grades.student_id;
```
这条SQL语句将返回以下结果:
| id | name | age | course | grade |
| --- | ------ | --- | ------ | ----- |
| 1 | Alice | 20 | Math | 85 |
| 1 | Alice | 20 | Science| 92 |
| 2 | Bob | 21 | Math | 78 |
| 3 | Claire | 19 | Science| 89 |
| 4 | David | 22 | Math | 95 |
| 4 | David | 22 | Science| 87 |
这里的`left join`意味着我们保留了`students`表格中的所有行,而`grades`表格中没有与`students`表格中匹配的行则用`NULL`填充。