【发布时间】:2021-08-05 01:17:27
【问题描述】:
我有一个简单的要求,有 3 个这样的 SQL Server 表:
-
表 1;列
AID Name DOB Gender PostCode -
表 2;列
BID Name DOB Gender PostCode -
表 3;列
CID Name DOB Gender PostCode
我希望基于姓名、出生日期、性别和邮政编码跨所有表加入(内部联接),如果记录匹配,我想将结果放在一个表中,其余记录我希望放在另一个表中用于进一步比较/处理。
这个查询的第一部分很简单:
SELECT AID, BID, CID, A.Name, A.DOB, A.Gender, A.PostCode
FROM TAB_A
JOIN TAB_B B ON A.Name = B.Name
AND A.DOB = B.DOB
AND A.Gender = B.Gender
AND A.PostCode = B.PostCode
JOIN TAB_C C ON A.Name = C.Name
AND A.DOB = C.DOB
AND A.Gender = C.Gender
AND A.PostCode = C.PostCode
但是对于剩余的不匹配记录的第二部分需要将它们放在单独的表中。
例如,如果所有 3 个表中总共有 50 条记录(A = 20,B=20 & C=10),并且根据上述查询匹配所有记录的输出为 5,我希望存储单独的表中有 95 条记录。
您的帮助/回答将不胜感激。
谢谢
【问题讨论】:
-
虽然这似乎是一种非常奇怪的连接表的方式,但对于一个人来说,您的连接条件并不是唯一的。请向我们展示您的尝试。
-
下面的答案有帮助吗?你熟悉接受答案吗?
-
是的,我对接受答案很熟悉,让我试试下面的查询。同样在加入时,我不仅要尝试匹配列并在匹配时给它们一些分数,因此在非唯一列上
标签: sql sql-server tsql sql-server-2012