「AR」と「すべて」の2つのデータベーステーブル名があり、「AR」のレコードを「すべて」に一致させようとしています。ここには一意の識別子はありません。だから私は姓、姓、dobとssnを使ってマッチを得る一種のあいまいなマッチングをしています。私のマッチクエリが機能しています。最初に一致する行を取得するSQL
すべてのテーブルには、一致するすべてのレコードをフェッチしたい「MID」という列がありますが、クエリを実行すると何千ものレコードが取得されます。私はオンラインでたくさん検索しましたが、それを理解できませんでした。
"AR"テーブルのすべてのレコードに対して、対応するMIdとともに "All"テーブルから最初に一致したレコードを取得しようとしています。誰でもここで私を助けることができますか?私のクエリは以下の通りです:
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」列があります。「矛盾します:」「すべての」テーブルから最初に一致したレコードを対応するMIdと一緒に取得しようとしています。だから*すべての*一致した行またはちょうど最初の行?どうか明らかにしてください。そして、「最初」を定義します。 –