【问题标题】:SQL to return matches and non-matchesSQL 返回匹配和不匹配
【发布时间】:2013-01-14 10:45:02
【问题描述】:

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

我使用的是 SQL Server 2005

谢谢。

【问题讨论】:

  • 您可以添加带有您想要结果的示例记录吗?我对您的陈述感到困惑:我想从两个表中返回匹配项以及不匹配项
  • 感谢您的回复,但我正在寻找 sgeddes 代码。

标签: sql sql-server-2005 join


【解决方案1】:

如果您想从两个表中获取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

【讨论】:

    【解决方案2】:

    我觉得你需要FULL OUTER JOIN:

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

    祝你好运。

    【讨论】:

    • 嗨,谢谢,那太好了。
    猜你喜欢
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多