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

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

Linda Hamilton
发布: 2025-01-03 02:35:39
原创
348 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板