首页 > 解决方案 > 重复记录 - 删除语句不起作用

问题描述

我面临与从表中删除记录相关的问题。表结构:id | 名字 | 姓氏 | 信息 | 时间戳

我的目标是删除所有具有相同名字和时间戳的重复记录。例子:

所以,我想删除 id = 198 的记录(这与 10 相同的 first_name 和时间戳)。

我试过这样的事情:

DELETE FROM people p1 
 INNER JOIN people p2 on p1.first_name = p2.first_name 
        AND p1.timestamp = p2.timestamp 
      WHERE p1.id < p2.id

我不知道为什么,但它不起作用。你能告诉我我做错了什么吗?

谢谢

标签: mysqlsql

解决方案


如果您使用 SQL Server 使用公用表表达式,则以下查询将删除所有重复记录:

WITH CTE AS(
   SELECT *,
       RN = ROW_NUMBER()OVER(PARTITION BY first_name ,timestamp  ORDER BY timestamp )
   FROM people 
)
DELETE FROM CTE WHERE RN > 1

推荐阅读