2024年09月23日 SQL中的 LEFT JOIN 用法 极客笔记
在SQL中,LEFT JOIN 是一种用于从一个表中检索数据,并且保留无论是否符合连接条件的行的结果集。LEFT JOIN 操作按照 LEFT 表中的顺序返回结果集,同时返回符合连接条件的 RIGHT 表中的数据。如果 RIGHT 表中没有符合条件的数据,则返回NULL。
SELECT 列名
FROM 左表名
LEFT JOIN 右表名
ON 左表名.连接列 = 右表名.连接列;
在上面的语法中,LEFT JOIN
关键字会根据 ON
子句中指定的条件联接两个表。如果在 ON
子句的条件中左表中的列没有与右表中的列匹配的值,那么将返回NULL
值。
考虑有两个表,一个是学生表(students),一个是成绩表(grades)。我们将通过学生表中的 student_id
和成绩表中的 student_id
进行 LEFT JOIN 操作,输出所有学生的信息以及他们的成绩。
student_id | student_name | class |
---|---|---|
1 | Alice | 10A |
2 | Bob | 11B |
3 | Clara | 12C |
4 | David | 9A |
student_id | grade |
---|---|
1 | 95 |
3 | 88 |
4 | 70 |
现在我们执行以下 SQL 查询:
SELECT students.student_id, students.student_name, students.class, grades.grade
FROM students
LEFT JOIN grades
ON students.student_id = grades.student_id;
运行结果如下:
student_id | student_name | class | grade |
---|---|---|---|
1 | Alice | 10A | 95 |
2 | Bob | 11B | NULL |
3 | Clara | 12C | 88 |
4 | David | 9A | 70 |
从上面的结果中可以看出,LEFT JOIN 操作会返回左表中所有的行,同时匹配右表中的相关行。如果右表中没有匹配的行,则相应的列会显示为 NULL。
除了连接两个表之外,LEFT JOIN 还可以用于多表连接。考虑有一个额外的表(subjects),该表存储了学生的选修科目。我们可以使用 LEFT JOIN 将三个表连接起来:
student_id | subject |
---|---|
1 | Math |
1 | Science |
2 | English |
2 | History |
3 | Math |
现在我们执行以下 SQL 查询:
SELECT students.student_id, students.student_name, students.class, grades.grade, subjects.subject
FROM students
LEFT JOIN grades
ON students.student_id = grades.student_id
LEFT JOIN subjects
ON students.student_id = subjects.student_id;
运行结果如下:
student_id | student_name | class | grade | subject |
---|---|---|---|---|
1 | Alice | 10A | 95 | Math |
1 | Alice | 10A | 95 | Science |
2 | Bob | 11B | NULL | English |
2 | Bob | 11B | NULL | History |
3 | Clara | 12C | 88 | Math |
4 | David | 9A | 70 | NULL |
通过以上示例,我们可以看到 LEFT JOIN 的用法及其灵活性。它可以用于连接两个或多个表,并在连接条件无法满足时返回 NULL 值。
总结:在 SQL 查询中,使用 LEFT JOIN 可以展现左表中的数据,并且按照连接条件连接右表的数据。如果右表中没有匹配的数据,相应的列会显示为 NULL。 LEFT JOIN 是进行表连接时常用的操作,能够帮助我们从多个相关表中获取需要的数据。
本文链接:http://so.lmcjl.com/news/13758/