Sql 删除关系表中的重复行

Sql 删除关系表中的重复行,sql,postgresql,Sql,Postgresql,我在PostgreSQL数据库中有一个关系表。 我想删除重复的行 我的桌子看起来像这样: idUser idFunction 1 1 2 1 3 1 3 1 4 1 4 1 4 2 我想要这个: idUser idFunction 1 1 2 1 3 1 4

我在
PostgreSQL
数据库中有一个关系表。 我想删除重复的行

我的桌子看起来像这样:

idUser      idFunction
1           1
2           1
3           1
3           1
4           1
4           1
4           2
我想要这个:

idUser      idFunction
1           1
2           1
3           1
4           1
4           2
我已经试过了:

DELETE TOP (SELECT COUNT(*) -1 FROM user_function 
        WHERE idUser IN
            (SELECT idUser FROM user_function
            GROUP BY idUser, idFunction
            HAVING COUNT(*) > 1)
        AND idFunction IN
            (SELECT idFunction FROM user_function
            GROUP BY idUser, idFunction
            HAVING COUNT(*) > 1))
FROM user_function
WHERE idUser IN
    (SELECT idUser FROM user_function
    GROUP BY idUser, idFunction
    HAVING COUNT(*) > 1)
AND idFunction IN
    (SELECT idFunction FROM user_function
    GROUP BY idUser, idFunction
    HAVING COUNT(*) > 1)
但是
PostgreSQL
告诉我在“TOP”中有一个
错误


如何在
PostgreSQL
中删除关系表中的重复行?

我建议重新创建该表:

create table temp_user_function as
    select distinct idUser, idFunction
    from user_function;

truncate table user_function;   -- backup first!!!

insert into user_function (idUser, idFunction)
    select idUser, idFunction
    from temp_user_function;

修复数据后,应将该对声明为唯一的。

我建议只重新创建表:

create table temp_user_function as
    select distinct idUser, idFunction
    from user_function;

truncate table user_function;   -- backup first!!!

insert into user_function (idUser, idFunction)
    select idUser, idFunction
    from temp_user_function;
修复数据后,应将该对声明为唯一的