首页 > 数据库 > mysql教程 > 如何在没有唯一标识符的情况下删除 SQL 中的重复行?

如何在没有唯一标识符的情况下删除 SQL 中的重复行?

Patricia Arquette
发布: 2025-01-23 01:37:08
原创
928 人浏览过

How to Delete Duplicate Rows in SQL Without a Unique Identifier?

无需唯一标识符删除重复行

要从表中删除没有唯一标识符列的重复行,可以使用 CTE(公共表表达式)结合 ROW_NUMBER()。

解决方案:

请考虑以下查询:

<code class="language-sql">WITH CTE AS (
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1;</code>
登录后复制

此查询执行以下操作:

  1. 创建 CTE: 它创建一个名为“CTE”的 CTE,为每一行分配一个唯一的 ROW_NUMBER(),从每个唯一值分区中的“col1”列的 1 开始计数。
  2. 识别重复项: 查询通过检查 ROW_NUMBER() 是否大于 1 来识别重复行。
  3. 删除重复项: 然后,它删除 CTE 中所有具有重复 ROW_NUMBER() 值的行。

结果:

查询的结果是一个删除了重复行的表,只保留每个唯一行的第一次出现。这是在原始表中不需要唯一标识符列的情况下实现的。

以上是如何在没有唯一标识符的情况下删除 SQL 中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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