Jika Anda mampu menulis ulang seluruh tabel, ini mungkin pendekatan paling sederhana:
WITH Deleted AS (
DELETE FROM discogs.releases_labels
RETURNING *
)
INSERT INTO discogs.releases_labels
SELECT DISTINCT * FROM Deleted
Jika Anda perlu secara khusus menargetkan catatan duplikat, Anda dapat menggunakan ctid
internal internal bidang, yang secara unik mengidentifikasi baris:
DELETE FROM discogs.releases_labels
WHERE ctid NOT IN (
SELECT MIN(ctid)
FROM discogs.releases_labels
GROUP BY label, release_id, catno
)
Berhati-hatilah dengan ctid
; itu berubah seiring waktu. Tetapi Anda dapat mengandalkannya agar tetap sama dalam satu cakupan pernyataan tunggal.