如何从包含匹配项的两个表中返回所有行?例如,如果我有一个帐户表和一个共同帐户ID字段的订单表,我想返回两个表中的匹配以及不匹配。
我正在使用SQL Server 2005
感谢。
答案 0 :(得分:2)
我认为你需要FULL OUTER JOIN
:
SELECT *
FROM Table1 T1
FULL OUTER JOIN Table2 T2 ON T1.AccountId = T2.AccountId
祝你好运。
答案 1 :(得分:0)
如果您想从两个表中同时获取MATCHED and UNMATCHED
个记录,请使用FULL JOIN
(或 FULL OUTER JOIN )。您还可以使用CASE
找到匹配或不匹配的记录,如下所示。 Sql-Fiddle DEMO
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