首页 >数据库 >mysql教程 >如何删除没有主键的SQL表中的重复记录?

如何删除没有主键的SQL表中的重复记录?

DDD
DDD原创
2025-01-04 22:23:39590浏览

How to Delete Duplicate Records in SQL Tables Without a Primary Key?

在 SQL 中删除没有主键的重复记录

重复记录会给数据完整性带来挑战,导致结果不准确和数据不一致。在表缺少主键的情况下,识别和删除重复记录可能会更加复杂。

在缺少主键的情况下,消除重复记录的一种方法是识别特定字段中具有匹配值的记录,例如员工 ID 和社会安全号码。为了实现这一点,可以使用子查询根据所需的条件对表进行分区,并为每条记录分配一个序列号。

然后可以使用 DELETE 语句通过过滤来删除具有重复字段值的记录行号大于 1 的行。这可确保仅保留每个唯一值集的第一次出现。

考虑以下 SQL查询:

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

在此查询中,子查询计算每条记录的行号,并按 EmpId、EmpName 和 EmpSSN 字段进行分区。 ORDER BY 子句确保行号按顺序分配。然后,DELETE 语句会删除行号大于 1 的所有记录,从而有效删除重复项。

以上是如何删除没有主键的SQL表中的重复记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn