Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Baris PostgreSQL Pendua Semasa Menyimpan Satu Salinan?

Bagaimana untuk Memadam Baris PostgreSQL Pendua Semasa Menyimpan Satu Salinan?

Susan Sarandon
Susan Sarandonasal
2025-01-06 10:03:42795semak imbas

How to Delete Duplicate PostgreSQL Rows While Keeping One Copy?

Memelihara Salinan Tunggal: Memadamkan Baris PostgreSQL Pendua

Dalam bidang pengurusan data, menghadapi baris pendua boleh menimbulkan cabaran. PostgreSQL, sistem pengurusan pangkalan data hubungan yang popular, menawarkan pelbagai pilihan untuk mengendalikan situasi sedemikian. Satu senario khusus timbul apabila pengguna berusaha untuk memadamkan baris pendua sambil mengekalkan satu salinan daripada setiap set.

Penyelesaian Pertanyaan

Untuk mencapai ini, pertanyaan SQL boleh digunakan . Pertanyaan berikut mengikut langkah yang digariskan dalam artikel yang disediakan:

DELETE FROM foo
WHERE id NOT IN (SELECT min(id) --or max(id)
FROM foo
GROUP BY hash)

Penjelasan

Pertanyaan ini menggunakan subkueri untuk mengenal pasti nilai ID minimum atau maksimum bagi setiap kumpulan daripada baris pendua. Lajur cincang mewakili kriteria berdasarkan penduaan yang ditentukan. Dengan mengecualikan ID yang tidak sepadan dengan minimum atau maksimum, pertanyaan mengekalkan satu salinan setiap set pendua sambil memadamkan yang lain.

Pertanyaan Alternatif

Pendekatan alternatif melibatkan penggunaan fungsi ROW_NUMBER() OVER ():

DELETE FROM foo AS f
WHERE ROW_NUMBER() OVER (PARTITION BY hash ORDER BY id) > 1

Pertanyaan ini memberikan nombor baris pada setiap baris, dibahagikan mengikut lajur cincang dan diisih mengikut lajur id dalam tertib menaik. Baris dengan nombor baris lebih daripada 1 (iaitu, pendua) kemudiannya dipadamkan.

Kesimpulan

Dengan melaksanakan salah satu pertanyaan yang dibentangkan dalam PostgreSQL, pengguna boleh memadamkan pendua dengan berkesan baris sambil mengekalkan satu salinan daripada setiap set. Pendekatan ini membolehkan penyingkiran data berlebihan sambil mengekalkan integriti set data asal.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris PostgreSQL Pendua Semasa Menyimpan Satu Salinan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn