Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Rekod Pendua dalam Jadual SQL Tanpa Kunci Utama?

Bagaimana untuk Memadam Rekod Pendua dalam Jadual SQL Tanpa Kunci Utama?

Patricia Arquette
Patricia Arquetteasal
2025-01-03 13:03:43990semak imbas

How to Delete Duplicate Records in a SQL Table Without a Primary Key?

Padamkan Rekod Pendua dalam Jadual SQL Tanpa Kunci Utama

Jika tiada kunci utama, mengenal pasti rekod pendua dalam pangkalan data boleh mencabar . Walau bagaimanapun, menggunakan gabungan fungsi tetingkap dan pengendali logik membolehkan pemadaman pendua yang cekap.

Dalam contoh yang disediakan, matlamatnya adalah untuk mengalih keluar rekod daripada jadual Pekerja yang mempunyai nilai EmpId dan EmpSSN yang sama. Untuk mencapai ini:

  1. Buat lajur sementara menggunakan fungsi ROW_NUMBER() untuk menetapkan kiraan pada setiap rekod berdasarkan pembahagian oleh medan EmpId, EmpName dan EmpSSN. Ini mencipta jadual di mana setiap gabungan unik mempunyai kiraan unik.
ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
  1. Buat subkueri yang menapis jadual untuk hanya memasukkan rekod dengan kiraan lebih daripada 1, menunjukkan rekod pendua .
SELECT SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
FROM Employee) SUB
WHERE SUB.cnt > 1
  1. Gunakan kenyataan DELETE untuk mengalih keluar rekod pendua daripada jadual Pekerja berdasarkan keputusan subkueri.
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
FROM Employee) SUB
WHERE SUB.cnt > 1

Dengan mengikuti langkah-langkah ini, rekod pendua akan dipadamkan dengan berkesan daripada jadual Pekerja, memastikan integriti data tanpa memerlukan data utama kunci.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod Pendua dalam Jadual SQL Tanpa Kunci Utama?. 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