處理沒有主鍵的SQL 表中的重複記錄
在沒有主鍵的情況下,可以從SQL 表中刪除重複記錄具有挑戰性的。讓我們考慮以下場景:
名為「employee」的表包含以下沒有主鍵的記錄:
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');
給定此表,目標是刪除重複記錄,同時保留獨特的。為了實現這一點,我們可以使用「ROW_NUMBER()」函數和「DELETE」語句的組合:
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt FROM Employee) SUB WHERE SUB.cnt > 1
分解程式碼:
透過執行此查詢,「employee」表中的重複記錄將被刪除,只留下唯一的記錄:
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
以上是如何從沒有主鍵的SQL表中刪除重複記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!