多くの重複値を作成するプログラムで 2 つのバグを見つけました。
- 「一意のインデックス」の代わりに「インデックス」が作成されました
- 重複チェックが 4 つのねじれたルーチンの 1 つに統合されていませんでした
そのため、データベースにアクセスしてクリーンアップする必要があります。
ステップ 1 は、すべての重複値のカウントでテーブルを装飾することです (次に、最初の値を見つけてから、すべてを移行することを検討します)。
以下のコードは機能します。数年前に同じテーブルで同様の「選択カウントからの更新」を行ったことを思い出し、半分のコードで実行しました。
これを書く良い方法はありますか?
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
;