在 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中文网其他相关文章!