0

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

我正在使用 SQL Server 2005

谢谢。

4

2 回答 2

2

我认为你需要FULL OUTER JOIN

SELECT *
FROM Table1 T1
  FULL OUTER JOIN Table2 T2 ON T1.AccountId = T2.AccountId

祝你好运。

于 2013-01-30T15:04:23.347 回答
0

如果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
于 2013-01-30T15:34:08.247 回答