发布时间:2025-01-31 00:51:15
大家好,我是宁一,今天讲解 SQL 教程第12课:OUTER JOIN外连接。
外连接包括左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)、全外连接(FULL OUTER JOIN)。我们通常会省略掉“OUTER”,将这些统称为左连接(LEFT JOIN)、右连接(RIGHT JOIN)以及全连接(FULL JOIN)。相比内连接(INNER JOIN),外连接不仅能获取交集记录,还能包含左表或右表中的所有记录。
左连接中,表格左方的所有记录都会被显示,这在查找左表中的所有记录,即使它们在右表中可能没有匹配时非常有用。例如,连接 Teachers 教师表与 Students 学生表,并通过教师字段 Tid 进行连接,可以显示所有教师,无论他们是否有对应学生。
右连接则显示表格右边的所有记录,与左连接互相对应。如果交换了 Teachers 表与 Students 表的位置并将其从左连接改为右连接,输出的结果基本相同,只是 Students 表中的列排列在前,Teachers 表中的列排列在后。
全连接结合了左连接与右连接的特点,结果显示包含左右两边表中全部数据的并集。在实际应用中,虽然 MySQL 不支持全连接操作,但理解它如何结合左右连接的使用方式是重要的。有条件的话,尝试在 SQL Server 中进行测试。
多表外连接类似于我们之前讨论的内连接,可以在多个表间应用左连接或右连接。对于较多表的连接,使用左连接(LEFT JOIN)相比同时使用左连接与右连接(RIGHT JOIN)更为清晰,易于理解。
自外连接是指通过 LEFT JOIN 将一个表与自身连接,常用于解决复杂数据关联问题,如大厂经常遇到的用户留存问题。作为课后作业,你可以尝试基于给定的 Users 表,编写 SQL 语句计算次日留存用户数。次日留存用户数定义为某日活跃用户在次日仍然保持活跃的用户数量。我们会提供具体的解答方法和解析步骤,以便在掌握相关函数和语法之后尝试解决问题。
请记得在学习 SQL 进程中不断实践,同时请关注本课程的最新动态,获取更多更新内容。