Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除mysql duplicate enty并根据时间戳使用最新版本_Mysql_Duplicates - Fatal编程技术网

删除mysql duplicate enty并根据时间戳使用最新版本

删除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) 假设更多的主键(

我在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)

假设更多的主键(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
请参见此-