FInding在表中复制记录并使用postgreSQL删除这些记录

时间:2015-07-05 15:31:13

标签: sql postgresql-9.3

我有一个名为“cities”的表,其中包含“ID”,“state”和“cities”列。表中有一些重复的记录。我希望从表中找到并删除这些记录。请注意,只有当州和城市名称相同时,查询才能找到并删除记录。如何使用postgreSQl完成此操作。

1 个答案:

答案 0 :(得分:2)

假设id是唯一的(正如您的问题所暗示的那样),您可以将deleteid一起使用:

delete from cities c
    where c.id > (select min(c2.id)
                  from cities c2
                  where c2.state = c.state and c2.cities = c.cities
                 );

如果id也可以相同,则可以使用ctid

delete from cities c
    where c.ctid > (select min(c2.ctid)
                    from cities c2
                    where c2.state = c.state and c2.cities = c.cities and
                          c2.id = c.id
                   );