![](/img/trans.png)
[英]Retrieve records from left table based on matching with right table and also non matching records from right table based on condition
[英]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.