Teknobu

PostgreSQL’de Yinelenen Satırlar Nasıl Silinir?

PostgreSQL’de Yinelenen Satırlar Nasıl Silinir?

PostgreSQL’de Yinelenen Satırlar Nasıl Silinir?

Son zamanlarda, PostgreSQL’de yinelenen kayıtları silmek için bir komut dosyası için bir istek aldım. Çoğu Veritabanı Geliştiricisinin, Veritabanından yinelenen kayıtları silme gibi bir gereksinimi vardır.

SQL Server gibi, ROW_NUMBER () PARTITION BY da PostgreSQL’de mevcuttur.

Bu betiği ROW_NUMBER () PARTITION BY yan tümcesi ile basit iç sorgu kullanarak hazırladım.

Örnek bir tablo oluşturun:

CREATE TABLE tbl_RemoveDuplicate
(	
	ID INTEGER PRIMARY KEY
	,Name VARCHAR(150)
);

Birkaç yinelenen kayıt ekleyin:

INSERT INTO tbl_RemoveDuplicate VALUES
(1,'ABC'),(2,'XYZ')
,(3,'XYZ'),(4,'RFQ')
,(5,'PQR'),(6,'EFG')
,(7,'EFG'),(8,'ABC');

Biri dışında, tüm yinelenen kayıtları silin:

DELETE FROM tbl_RemoveDuplicate
WHERE ID IN 
(SELECT ID
FROM (SELECT id,
	     ROW_NUMBER() OVER (partition BY Name ORDER BY ID) AS RowNumber
     FROM tbl_RemoveDuplicate) AS T
WHERE T.RowNumber > 1);

Sonucu kontrol edin:

SELECT *FROM tbl_RemoveDuplicate;
 id | name
----+------
  1 | ABC
  2 | XYZ
  4 | RFQ
  5 | PQR
  6 | EFG
(5 rows)
2 Beğen