模糊匹配PostgreSQL中的重复项并将重复项移到新表中

问题描述 投票:0回答:1

我有一个用户表,其中包含以下字段id, first_name, last_name, street_address, city, state, zip-code, firm, user_identifier, created_at, update_at。该表有很多重复项。

我想用first_name, last_name and street_address模糊匹配它们。

我在这里做了

我创建了一个具有以下字段的新表

CREATE TABLE dupes(
   id  bigint NOT NULL,
   first_name    TEXT,
   last_name      TEXT,
   street_address        CHAR(50),
   searched_name TEXT,
   searched_user_id bigint
);

接下来,我有这个函子,它应该遍历字段并插入到相似度高于```.75]的新表(dupes)中>

DO 
$$
DECLARE 
    rec record;
    full_name varchar;
BEGIN
    FOR rec IN 
    SELECT id, first_name ||' '||last_name ||' '||street_address full_name 
    FROM users

    LOOP
        INSERT INTO dupes(id,first_name,last_name, street_address,searched_name, searched_user_id)
        SELECT id,first_name,last_name, street_address,rec.full_name,rec.id 
        FROM users
        WHERE similarity(first_name ||' '||last_name||' '||street_address, rec.full_name) > .75
        and  id<>rec.id;
    END LOOP;
END
$$;

不幸的是,我返回的每一行都有更多的副本。

我很新。谁能帮忙?

谢谢

我有一个用户表,该表具有以下字段id,first_name,last_name,street_address,城市,州,邮政编码,公司,user_identifier,created_at,update_at。这个表有很多...

sql postgresql similarity
1个回答
0
投票

这不要求进行程序编程。 (基于它进行设置甚至可能使您免于重复的重复…;-))

© www.soinside.com 2019 - 2024. All rights reserved.