假设我的数据为,
declare @TableA table
(
TableAID int,
TableAName varchar(10)
)
declare @TableB table
(
TableBID int,
TableBName varchar(10),
TableAID int
)
insert into @TableA values
(1, 'A 1'),
(2, 'A 2'),
(3, 'A 3')
insert into @TableB values
(1, 'B 1', 1),
(2, 'B 2', 2)
我想编写一个连接而不是 SQL 查询,它返回如下所示的数据,
TableAName TableBName
---------- ----------
A 3 N/A
简而言之,通过内部联接获得 View 的补充!
最佳答案
这是OUTER JOIN
的经典用法,最常见的是使用LEFT OUTER JOIN
(通常缩写为LEFT JOIN
) >)
SELECT A.TableAName, B.TableBName
FROM TableA A
LEFT JOIN TableB B on A.TableAID = B.TableAID
WHERE B.TableAID IS NULL
外连接允许记录数不等,这里TableA有3条,TableB有2条。当TableB中没有匹配数据时,就会存在NULL,因此可以如上所示过滤NULL。
请帮自己一个忙,去 here for a visual representation of joins & 查找Left Exclusion JOIN
关于mysql - 构建 SQL 连接以补充数据。需要 T-SQL 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25849807/