首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比较SQL Server表并查找匹配的输出

比较SQL Server表并查找匹配的输出
EN

Stack Overflow用户
提问于 2019-06-26 04:37:30
回答 2查看 39关注 0票数 0

我正在尝试比较两个表AB,以查找A存在但B中不存在相同记录的实例。

表A:

代码语言:javascript
复制
|PROJECT|ID|USER|DATE|
+-------+--+----+----+
|   2   |1 |ASD |0624|
|   3   |2 |FGH |0624|

表B:

代码语言:javascript
复制
|PROJECT|ID|USER|DATE|
+-------+--+----+----+
|   2   |1 |ASD |0624|

我希望看到这样的输出:

代码语言:javascript
复制
|PROJECT|ID|USER|DATE|MATCHING_ID|
+-------+--+----+----+-----------+
|   2   |1 |ASD |0624|     1     |
|   3   |2 |FGH |0624|    NONE   |

我尝试过这样的方法,但我只是遇到了语法或不明确的列名错误。我不完全确定我做错了什么。我举了几个例子,但都落到了同样的境地。

代码语言:javascript
复制
SELECT [PROJECT], [ID],  [USER], [DATE]
FROM [TABLE_A] 
LEFT JOIN [TABLE_B] ON [ID] = [ID]
WHERE [DATE] >= DATEADD(mm, -2, GETDATE())
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 04:39:42

修复您的JOIN条件并使用COALESCE()

代码语言:javascript
复制
SELECT A.*, COALESCE(B.ID, 'NONE') as MATCHING_ID
FROM [TABLE_A] A LEFT JOIN
     [TABLE_B] B
     ON A.[ID] = B.[ID] AND
        A.[DATE] = B.[DATE] AND
        A.PROJECT = B.PROJECT AND
        A.USER = B.USER;
票数 1
EN

Stack Overflow用户

发布于 2019-06-26 04:46:15

您可以使用CASE语句和EXISTS:

代码语言:javascript
复制
SELECT a.*,
CASE WHEN EXISTS (
  SELECT 1 FROM [TABLE_B] b
  WHERE a.PROJECT = b.PROJECT AND a.ID = b.ID AND a.USER = b.USER AND a.DATE = b.DATE
) THEN a.ID ELSE 'NONE' END MATCHING_ID
FROM [TABLE_A] a
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56761677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档