我有两个具有相似列名的表,我需要从左表返回在右表中找不到的记录?我有一个主键(列),它将帮助我比较两个表。首选哪种连接?
如果您要使用T-SQL,请先了解基础知识。这里有三种类型的联接,每种联接都有自己的一组逻辑处理阶段,分别是:
cross join
Cartesian Product
Inner joins
A Cartesian product
filters
ON
Join condition
Outer Joins
在outer join你标记表作为preserved使用关键字表格LEFT OUTER JOIN,RIGHT OUTER JOIN或FULL OUTER JOIN之间的表名。该OUTER关键字optional。的LEFT关键字意味着的行left table被保留; 的RIGHT关键字的装置,在各行right table被保留; 和FULL关键字的意思是,行both的left,并right表将被保留。
outer join
preserved
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
OUTER
optional
LEFT
left table
RIGHT
right table
FULL
both
left
right
的第三个逻辑查询处理阶段outer join基于ON谓词识别保留表中未在其他表中找到匹配项的行。此阶段将这些行添加到连接的前两个阶段所生成的结果表中,并NULL在这些外部行中使用标记作为占位符,表示来自连接的未保留端的属性。
NULL
现在,如果我们看一个问题:要从左表中返回在右表中找不到的记录,请使用Left outer join并筛选出NULL连接右侧具有属性值的行。
Left outer join