SQL返回匹配和不匹配

时间:2013-01-30 15:02:46

标签: sql sql-server-2005 join

如何从包含匹配项的两个表中返回所有行?例如,如果我有一个帐户表和一个共同帐户ID字段的订单表,我想返回两个表中的匹配以及不匹配。

我正在使用SQL Server 2005

感谢。

2 个答案:

答案 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