如何:创建外部联接
默认情况下,查询和视图设计器在表之间创建内部联接。如果要在结果集中包含在联接表无匹配项的数据行,可创建外部联接。
当创建外部联接时,表在 SQL 语句中出现的顺序(在 SQL 窗格中反映)非常重要。添加的第一个表成为“左”表,而第二个表成为“右”表。(表在“关系图”窗格中实际出现的顺序并不重要。)当您指定左外部联接或右外部联接时,引用的顺序是将这些表添加到查询中的顺序,以及它们在“SQL”窗格中的 SQL 语句中出现的顺序。
![]() |
---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。 |
创建外部联接
在“关系图”窗格中选择联接线,然后从**“查询设计器”菜单中选择“从 <tablename> 中选择所有行”**,选择命令,以包括您要包括其中更多行的表。
选择第一个表可创建左外部联接。
选择第二个表可创建右外部联接。
选择两个表可创建完全外部联接。
说明
有些数据库(如 Oracle)不支持完全外部联接。
当您指定外部联接时,查询和视图设计器将修改联接线以指示外部联接。
此外,查询和视图设计器将修改“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
因为外部联接包含不匹配的行,所以可使用它查找与外键约束冲突的行。为此,可创建一个外部联接,然后添加搜索条件以查找在最右侧表的主键列为空的行。例如,下列外部联接查找 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)