Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyimpan Hanya Satu Salinan Baris Pendua dalam PostgreSQL?

Bagaimana untuk Menyimpan Hanya Satu Salinan Baris Pendua dalam PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2025-01-06 10:15:43
asal
754 orang telah melayarinya

How to Keep Only One Copy of Duplicate Rows in PostgreSQL?

Memelihara Satu Salinan Baris Pendua dalam Postgres

Apabila berurusan dengan data pendua, selalunya perlu mengalih keluar lebihan sambil mengekalkan sekurang-kurangnya satu contoh setiap set pendua. Dalam Postgres, ini boleh dicapai melalui pendekatan berikut:

Untuk memadamkan baris pendua sambil mengekalkan satu salinan, kita boleh menggunakan pertanyaan berikut:

DELETE FROM foo
WHERE id NOT IN (
  SELECT MIN(id)  -- or MAX(id) for the latest copy
  FROM foo
  GROUP BY hash
);
Salin selepas log masuk

Dalam pertanyaan ini:

  • foo ialah jadual yang mengandungi baris pendua.
  • id ialah yang utama lajur kunci.
  • cincang ialah lajur atau ungkapan yang mengenal pasti baris pendua (cth., gabungan unik lajur atau fungsi cincang).

Dengan menggunakan MIN(id) atau MAX (id) di dalam subkueri, kami memastikan bahawa hanya salinan tertua atau terbaharu bagi setiap set pendua dikekalkan.

Pendekatan ini memastikan bahawa sekurang-kurangnya satu salinan setiap baris pendua disimpan dalam jadual sambil mengalih keluar pendua yang tidak diperlukan.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan