繁体   English   中英

SQL Server-从LEFT表返回所有记录,而从右表仅返回不匹配的记录

[英]SQL Server - Return all records from LEFT table and only non matching records from right table

我有2个具有相同结构(表名)的表。 表1和表2。

我需要返回表1中的所有记录,并且仅返回表2中与表1中的记录不匹配/联接的记录。

表2比表1具有更多的记录。

我将加入3个字段中的2个表。

因此,基本上我希望返回table1的所有记录,并且只返回与table2的table1不匹配(在3个字段上连接)的记录。

换句话说,当两个表中都存在记录时,表1记录的优先级高于最终结果输出中的表2记录(3个字段的值相同)

我开始写类似下面的内容,但我认为它不起作用。 我应该改用左外部联接吗?

    Select * from table1 t1
    left join table2 t2 on t1.id = t2.id and t1.date = t2.date and t1.custid= t2.custid
where t2.id is null or t2.date is null or t2.custid is null

因此,您需要table1每一行以及table2中与table1不匹配的行?

SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2 t2
WHERE NOT EXISTS(SELECT * FROM table1
                 WHERE id = t2.id
                 AND date = t2.date
                 AND custid = t2.custid);
Select * from table1 t1
  Union
Select * from table2 t2
Where Not exists
     (Select * from table1 
      Where id = t1.id 
         and date = t1.date 
         and custid= t1.custid)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM