Mengendalikan Rekod Pendua dalam Jadual SQL Tanpa Kekunci Utama
Jika tiada kunci utama, memadamkan rekod pendua daripada jadual SQL boleh mencabar. Mari kita pertimbangkan senario berikut:
Jadual bernama "pekerja" mengandungi rekod berikut tanpa kunci utama:
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');
Memandangkan jadual ini, matlamatnya adalah untuk memadamkan rekod pendua sambil mengekalkan yang unik. Untuk mencapai ini, kita boleh menggunakan gabungan fungsi "ROW_NUMBER()" dan pernyataan "DELETE":
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt FROM Employee) SUB WHERE SUB.cnt > 1
Memecahkan kod:
Dengan melaksanakan pertanyaan ini, rekod pendua dalam jadual "pekerja" akan menjadi dialih keluar, hanya meninggalkan rekod unik:
select * from employee; EmpId EmpName EmpSSN 1 Jack 555-55-5555 2 Joe 555-56-5555 3 Fred 555-57-5555 4 Mike 555-58-5555 5 Cathy 555-59-5555 6 Lisa 555-70-5555
Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod Pendua dari Jadual SQL Tanpa Kunci Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!