mysql - 重复记录 - 删除语句不起作用
问题描述
我面临与从表中删除记录相关的问题。表结构:id | 名字 | 姓氏 | 信息 | 时间戳
我的目标是删除所有具有相同名字和时间戳的重复记录。例子:
- 10,Mariusz,Jablko,Smieszny,1635837167
- 198,Mariusz,Smieszek,Zwariowany,1635837167
- 285,Mariusz,Ogien,Smutny,1635837168
所以,我想删除 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
我不知道为什么,但它不起作用。你能告诉我我做错了什么吗?
谢谢
解决方案
如果您使用 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
推荐阅读
- r - rmarkdown pdf中的双倍间距
- python - 无法从源代码构建 SciPy,因为缺少 pybind11
- javascript - 使用JS forEach将多维数组转换为html表格
- django - django:模板显示时区也适用于日期时间
- corretto - 将 Springboot 应用程序从 AWS Java 8 部署到 Corretto 8 平台
- css - 防止溢出:使用flexbox列时隐藏在中间剪切文本
- go - Colly Max Depth 和编码/json - null
- python - Heroku 不运行我的 python 应用程序,但应用程序在本地运行良好
- python - Pymongo 无法为集合参数编码对象
- visual-studio - 抛出异常:访问冲突读取位置