SQL中的 LEFT JOIN 用法

2024年09月23日 SQL中的 LEFT JOIN 用法 极客笔记

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 操作,输出所有学生的信息以及他们的成绩。

students表

student_id student_name class
1 Alice 10A
2 Bob 11B
3 Clara 12C
4 David 9A

grades表

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进行多表连接

除了连接两个表之外,LEFT JOIN 还可以用于多表连接。考虑有一个额外的表(subjects),该表存储了学生的选修科目。我们可以使用 LEFT JOIN 将三个表连接起来:

subjects表

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/

展开阅读全文