前言

      删除完全相同的两条记录,参考:​​MySQL第十二课 删除完全相同的数据_51CTO博客_数据库删除相同的记录​

场景

      删除相同时间的记录,其他的字段都不唯一,也不一定相同,表名video_structure_vehicle,相同数据的字段reportTime,类型datetime

脚本

方案一

先选出不重复的数据,然后导出

select GROUP_CONCAT(distinct reportTime), 
`id` ,
`alarmType` ,
`channelId` ,
`address` ,
`description` ,
`num` ,
`image` ,
`alarm_status` ,
`secondImg` ,
`channelIdExit` ,
`numEnter` ,
`numExit` ,
`nameEnter` ,
`nameExit` ,
`imageExit` ,
`alarm_interval` ,
`directionName` ,
`confirmUser` ,
`confirmUserNo` ,
`confirmInfo` ,
`confirmTime` ,
`eventId` ,
`IsReport` ,
`ptz` ,
`repeatCount`
from `video_structure_vehicle` GROUP BY reportTime

方案二 

delete from video_structure_vehicle 
where reportTime in
(select reportTime from
(select reportTime,count(*) from video_structure_vehicle group by reportTime having count(*) > 1)a)
and id not in
(select id from (select reportTime,min(id) id from video_structure_vehicle where reportTime in
(select reportTime from (select reportTime,count(*) from video_structure_vehicle group by reportTime having count(*) > 1)b)
group by reportTime)c)

注意

mysql要求每一个派生出来的表都必须有一个自己的别名,否则提示报错:

[Err] 1248 - Every derived table must have its own alias