我在一个创建大量重复值的程序中发现了两个错误:
- 创建了“索引”而不是“唯一索引”
- 重复检查未集成在 4 个扭曲例程之一中
所以我需要进去清理我的数据库。
第一步是用所有重复值的计数来装饰表(接下来我将研究找到第一个值,然后将所有内容迁移过来)
下面的代码有效,我只记得几年前在同一张表上做了类似的“从选择计数更新”,我用一半的代码完成了它。
有没有更好的方法来写这个?
UPDATE
shared_link
SET
is_duplicate_of_count = subquery.is_duplicate_of_count
FROM
(
SELECT
count(url) AS is_duplicate_of_count
, url
FROM
shared_link
WHERE
shared_link.url = url
GROUP BY
url
) AS subquery
WHERE
shared_link.url = subquery.url
;