如何返回两个表中的所有行,包括匹配项?例如,如果我有一个共同的帐户 ID 字段的帐户表和订单表,我想从两个表中返回匹配项以及不匹配项。
我正在使用 SQL Server 2005
谢谢。
如何返回两个表中的所有行,包括匹配项?例如,如果我有一个共同的帐户 ID 字段的帐户表和订单表,我想从两个表中返回匹配项以及不匹配项。
我正在使用 SQL Server 2005
谢谢。
我认为你需要FULL OUTER JOIN
:
SELECT *
FROM Table1 T1
FULL OUTER JOIN Table2 T2 ON T1.AccountId = T2.AccountId
祝你好运。
如果MATCHED and UNMATCHED
要从两个表中获取两条记录,请使用FULL JOIN
(或FULL OUTER JOIN)。您还可以使用CASE
如下所示找到匹配或不匹配的记录。Sql-Fiddle 演示
select isnull(a.accountId,o.accountId) accId, AccName,ProName,
case when AccName+ProName is null then 'No'
else 'Yes' end as IsMatched
from Accs a FULL JOIN Orders o on a.accountId = o.accountId
order by IsMatched
--Example results
AccId AccName ProName IsMatched
1 X (null) No
10 (null) Apple No
2 Y Orange Yes
3 Z Mango Yes