从没有主键的 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中文网其他相关文章!