我有兩個巨大的數據庫表名稱「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'一起。所以*每個*匹配的行或只是第一個?請澄清。並定義「第一」。 –