mysql - mysql中的重复数据删除
问题描述
我有一个 USER 表,当字段年龄和名称相等时,我需要对记录进行重复数据删除,并在 5 分钟内保留最早的记录:我得到了这样的 sql,但不知何故不起作用:
SELECT *
FROM user u1
WHERE NOT EXISTS (SELECT *
FROM user u2
WHERE u2.name = u1.name AND u2.age = u1.age
AND u2.created_at > u1.created_at - INTERVAL 5 MINUTE)
解决方案
我们可以尝试将逻辑表述为删除任何可以找到另一条具有相同年龄和名称的记录的记录,创建时间在考虑删除记录的 5 分钟内。
DELETE
FROM user u1
WHERE EXISTS (SELECT 1 FROM user u2
WHERE u2.age = u1.age AND u2.name = u1.name AND
TIMEDIFF(t2.create_time, t1.create_time) < '00:05:00');
这假定您实际上想要删除重复的记录。如果您只想选择,请使用@Nick 提供的逻辑,这与我的删除查询非常相似。
推荐阅读
- html - Textarea doesn't stretch when parent has max-height and overflow scroll
- java - org.hibernate.MappingException 在属于一对多关系的实体之一中
- javascript - 反应中的待办事项列表 - 你将如何移动完成的项目
- javascript - 我不能在两个组件之间传递对象(类组件到功能组件)
- vba - Excel VBA - 拆分文件和密码保护
- javascript - 打字稿: JSON.parse(localStorage.getItem('myself')) 返回 [object Object] 而不是预期的对象
- sql-server - 如何避免事务中 IF EXISTS 语句中的 NULL 值?
- arrays - C程序查找最大和最小元素时出错
- python - 在python中按长度将字符串分成几部分
- function - Powershell 条件参数集名称验证集