删除mysql duplicate enty并根据时间戳使用最新版本
我在mysql数据库中有2个条目,在“hwaddr”列下有重复条目,如添加的屏幕截图所示 如何基于“hwaddr”列搜索重复项,并仅保留基于“timestamp”列的重复项?(删除旧的) 尝试删除以下内容:删除mysql duplicate enty并根据时间戳使用最新版本,mysql,duplicates,Mysql,Duplicates,我在mysql数据库中有2个条目,在“hwaddr”列下有重复条目,如添加的屏幕截图所示 如何基于“hwaddr”列搜索重复项,并仅保留基于“timestamp”列的重复项?(删除旧的) 尝试删除以下内容: DELETE FROM `list` WHERE `id`IN (SELECT * FROM (SELECT MAX( id ) FROM `list` GROUP BY ip HAVING COUNT( ip ) >1) AS e) 假设更多的主键(
DELETE FROM `list` WHERE `id`IN (SELECT *
FROM (SELECT MAX( id )
FROM `list`
GROUP BY ip
HAVING COUNT( ip ) >1) AS e)
假设更多的主键(id)将具有最新的时间戳,那么您可以使用下面的查询,该查询更优化,并将删除所有重复记录,而不仅仅是一条,不包括最新的记录
DELETE b.*
FROM mytable b
LEFT JOIN (SELECT MAX(id) FROM mytable GROUP BY hwaddr) a ON a.id=b.id
WHERE a.id IS NULL;
这是一个查询命令,即使对于生产服务器,也可以有更好的选项。列出hwaddr复制
SELECT * FROM `general2` WHERE hwaddr in ( SELECT hwaddr FROM general2 GROUP BY hwaddr HAVING COUNT( * ) >1 )
列出将删除的内容
select t1.* FROM general2 t1, general2 t2 WHERE t1.hwaddr=t2.hwaddr AND t1.timestamp < t2.timestamp
从general2 t1、general2 t2中选择t1.*其中t1.hwaddr=t2.hwaddr和t1.timestamp
按hwaddr删除,保留最新的按时间戳更新
DELETE t1 FROM general2 t1, general2 t2 WHERE t1.hwaddr=t2.hwaddr AND t1.timestamp < t2.timestamp
从general2 t1、general2 t2中删除t1,其中t1.hwaddr=t2.hwaddr和t1.timestamp
请参见此-