MySQL第十三课 删除某一个字段相同的记录
原创
©著作权归作者所有:来自51CTO博客作者fengyuzaitu的原创作品,请联系作者获取转载授权,否则将追究法律责任
前言
删除完全相同的两条记录,参考: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