從沒有主鍵的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');
到根據「EmpId」和「EmpSSN」刪除重複行,我們可以利用以下內容查詢:
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt FROM Employee) SUB WHERE SUB.cnt > 1
解釋:
執行此查詢將有效地從「employee」表中刪除重複記錄,同時保留資料的原始順序。執行後,該表將僅包含基於「EmpId」和「EmpSSN」欄位的唯一行。
以上是如何從沒有主鍵的 SQL 表中刪除重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!