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

如何从没有主键的 SQL 表中删除重复行?

Linda Hamilton
Linda Hamilton原创
2025-01-03 02:35:39375浏览

How to Remove Duplicate Rows from a SQL Table Without a Primary Key?

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

在处理缺少主键的 SQL 表时,处理重复记录可能会带来挑战。但是,有一些有效的方法可以根据特定条件消除重复项。

考虑以下场景:您有一个“员工”表,其中包含“EmpId”、“EmpName”和“EmpSSN”列以及一些记录“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

理解查询:

  • 外部 DELETE 语句从 'employee' 中删除行' 基于从子查询检索的信息的表。
  • 子查询计算行数(cnt) 对于“EmpId”、“EmpName”和“EmpSSN”的每个唯一组合。
  • PARTITION BY 子句按这些字段对记录进行分组,以确保为每个不同组重置行计数。
  • ORDER BY 子句对每个组内的记录进行排序,以确保第一行是原始记录。
  • 子查询中的 WHERE 子句过滤掉 cnt 大于 1 的行,表明它们是重复的。
  • 外部 DELETE 语句然后使用 FROM 子句将子查询作为虚拟表 (SUB) 引用,并删除主“employee”表中的这些行。

此查询根据“EmpId”的唯一组合有效删除重复记录和“EmpSSN”,在没有主键的表中高效地执行数据清理。

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

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