【问题标题】:Delete duplicate rows in relationship table [duplicate]删除关系表中的重复行[重复]
【发布时间】:2020-03-29 10:57:20
【问题描述】:

我在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”处有一个error

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

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    我可能会建议重新创建表格:

    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;
    

    您应该在修复数据后声明该对是唯一的。

    【讨论】:

      猜你喜欢
      • 2015-12-07
      • 2012-10-21
      • 2023-04-10
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      相关资源
      最近更新 更多