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

Bagaimana untuk Memadam Baris Pendua dari Jadual SQL Tanpa Kunci Utama?

Susan Sarandon
Susan Sarandonasal
2025-01-05 16:53:40550semak imbas

How to Delete Duplicate Rows from a SQL Table Without a Primary Key?

Memadamkan Rekod Pendua daripada Jadual SQL tanpa Kunci Utama

Dalam jadual SQL tanpa kunci utama, mengenal pasti dan mengalih keluar rekod pendua boleh menjadi tugas yang kompleks. Masalah timbul apabila berbilang baris berkongsi nilai yang sama dalam lajur tertentu, mewujudkan lebihan dalam data. Untuk menyelesaikan masalah ini, kami akan meneroka pertanyaan yang menghapuskan baris pendua dengan berkesan berdasarkan gabungan lajur.

Pertimbangkan jadual berikut bernama "pekerja" dengan data yang diberikan:

create table employee
(
 EmpId number,
 EmpName varchar2(10),
 EmpSSN varchar2(11)
);

insert into employee values(1, 'Jack', '555-55-5555');
insert into employee values (2, 'Joe', '555-56-5555');
insert into employee values (3, 'Fred', '555-57-5555');
insert into employee values (4, 'Mike', '555-58-5555');
insert into employee values (5, 'Cathy', '555-59-5555');
insert into employee values (6, 'Lisa', '555-70-5555');
insert into employee values (1, 'Jack', '555-55-5555');
insert into employee values (4, 'Mike', '555-58-5555');
insert into employee values (5, 'Cathy', '555-59-5555');
insert into employee values (6 ,'Lisa', '555-70-5555');
insert into employee values (5, 'Cathy', '555-59-5555');
insert into employee values (6, 'Lisa', '555-70-5555');

Kepada alih keluar baris pendua berdasarkan "EmpId" dan "EmpSSN," kita boleh memanfaatkan perkara berikut pertanyaan:

DELETE SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
 FROM Employee) SUB
WHERE SUB.cnt > 1

Penjelasan:

  1. Pertanyaan dalaman mengira nombor baris untuk setiap baris berdasarkan lajur pembahagian "EmpId," ​​"EmpName" dan "EmpSSN." Langkah ini mengenal pasti susunan baris untuk setiap gabungan unik medan ini.
  2. Pertanyaan luar kemudian mengalih keluar baris dengan nombor baris "cnt" lebih besar daripada 1, menunjukkan bahawa terdapat baris pendua untuk gabungan khusus tersebut.

Melaksanakan pertanyaan ini akan mengalih keluar rekod pendua secara berkesan daripada jadual "pekerja" sementara mengekalkan susunan asal data. Selepas pelaksanaan, jadual akan mengandungi hanya baris unik berdasarkan medan "EmpId" dan "EmpSSN".

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua dari 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