创建外部联接 (Visual Database Tools)

适用于:SQL Server

默认情况下,查询和视图设计器 在表之间创建内部联接。 内连接会排除那些与其他表中的行不匹配的行。 不过,外部连接会返回FROM子句中至少一个表或视图中的所有行,只要这些行满足任何WHERE或HAVING筛选条件。 如果希望在结果集中包括那些在联接的表中没有匹配的数据行,可以创建外连接。

创建外部联接时,表在 SQL 语句中显示的顺序(如 SQL 窗格中所示)非常重要。 添加的第一个表将成为“左”表,第二个表将成为“右”表。 (表在“关系图”窗格中显示的实际顺序 不重要。指定左或右外部联接时,指的是表添加到查询的顺序,以及表在 SQL 窗格中显示的顺序

创建外部联接

  1. 自动或手动创建联接。 有关详细信息,请参阅 自动联接表(Visual Database Tools)手动联接表(Visual Database Tools)

  2. 在“关系图”窗格中选择联接行,然后从 查询设计器 菜单中选择命令 从 <表名>选择所有行,该命令应包含要包含其额外行的表。

    • 选择第一个表以创建左外部联接。

    • 选择第二个表以创建右外部联接。

    • 选择这两个表以创建完整的外部联接。

指定外部联接时,查询和视图设计器将修改联接行以指示外部联接。

此外,查询和视图设计器修改 SQL 窗格中的 SQL 语句以反映联接类型的更改,如以下语句所示:

SELECT employee.job_id, employee.emp_id,  
   employee.fname, employee.minit, jobs.job_desc  
FROM employee LEFT OUTER JOIN jobs ON   
    employee.job_id = jobs.job_id  

由于外部联接包含不匹配的行,因此可以使用它查找违反外键约束的行。 为此,请创建外部联接,然后添加搜索条件以查找最右侧表的主键列为 null 的行。 例如,以下外部联接查找 employee 表中没有相应行的 jobs 表中的行:

SELECT employee.emp_id, employee.job_id  
FROM employee LEFT OUTER JOIN jobs   
   ON employee.job_id = jobs.job_id  
WHERE (jobs.job_id IS NULL)  

另请参阅

使用联接查询(Visual Database Tools)