【问题标题】:Unique Index with counter and delete带计数器和删除的唯一索引
【发布时间】:2014-11-05 05:56:25
【问题描述】:

我有一个三列的表。 我想用一个计数器创建一个关于所有三列的unique index,它告诉我重复项在哪里。我也想删除它们。

【问题讨论】:

  • CREATE TABLE products (product_no integer, name_no integer, price integer); INSERT INTO products (product_no, name_no, price) VALUES (1, 3, 99), (2, 5, 199), (3, 6, 299), (3, 3, 1);从产品中选择 *; CREATE UNIQUE INDEX index_name on products(product_no, name_no, price);我没有收到错误,但我有重复或?
  • 好吧:如果你有一个唯一的索引,你就不能有重复。如果你有重复,你不能有一个唯一的索引。
  • 我想删除所有重复值以及它们在表中的位置
  • product_no = 3 的记录有两条,name_no=3 的记录有两条。你认为哪一个是重复的?

标签: postgresql indexing duplicates unique sql-delete


【解决方案1】:

我不确定您的问题到底是什么,但如果您需要删除 postgre 数据库中的重复项,请尝试以下操作:

DELETE FROM tablename 
    WHERE id IN (SELECT id
          FROM (SELECT id,
                         row_number() over (partition BY column1, column2, column3 ORDER BY id) AS rnum
                 FROM tablename) t
          WHERE t.rnum > 1);

“有时使用时间戳字段而不是 ID 字段。”

它帮助我从表中删除重复项。

您可以在以下位置找到此解决方案: http://wiki.postgresql.org/wiki/Deleting_duplicates

【讨论】:

    猜你喜欢
    • 2016-07-06
    • 2020-10-01
    • 1970-01-01
    • 2019-10-23
    • 2021-02-27
    • 2019-01-13
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多