我有两个巨大的数据库表名称“AR”和“全部”,我试图将“AR”中的记录匹配到“全部”,注意这里我们没有唯一的标识符,所以我正在使用名字,姓氏,dob和ssn进行一种模糊匹配以获得匹配。我的匹配查询正在工作。SQL获取第一个匹配的行
所有表都有一列“MID”,我想为每个匹配的记录提取一列,但是当我尝试查询时,我得到了数千条记录。我在网上搜索了很多,但无法弄清楚。
我想从“全部”表中的第一个匹配的记录与相应的MID,对于每个记录在我的“AR”表一起。有人可以帮我从这里出去吗。我的查询是以下:
Select distinct a.*,
r."MID"
from "public"."AR" a
inner join "public"."All" r
On ( a."cDOB" = r."cDOB"
and right(a."SSN",4) = right(r."SSN",4)
and left(a."Last Name",4) = left(r."LastName",4)
and (a."SSN"!='' or r."SSN"!='')
)
OR
( left(a."First Name",4) = left(r."FirstName",4)
and ( left(a."Last Name",4) = left(r."LastName",4)
OR right(a."Last Name",4) = right(r."LastName",4)
)
and ( right(a."SSN",4) = r."SSN"
OR a."cDOB" = r."cDOB"
)
and ( a."SSN"!=''
OR r."SSN"!=''
)
)
OR
( a."MelID (Original) " = r."Prp"
and a."cDOB" = r."cDOB"
and r."Prp"!=''
);
查询给了我正确的输出,如果我删除R“MID”,从第一行,但是当我取R“MID”的输出记录很多有重复。什么不是。
你忘了提供你的tabl e定义和Postgres版本。一些样本数据和期望的结果也会有很长的路要走。另外,你的描述不会加起来。 '所有表有一栏“MID”,我想为我的每一个匹配record'取矛盾:'试图从“全部”表中的第一个匹配的记录相应MId'一起。所以*每个*匹配的行或只是第一个?请澄清。并定义“第一”。 –