mysql删除日期最大_Mysql删除重复记录,除了一个有最大时间

您还需要匹配RFID:

DELETE t

FROM attendance_images AS t LEFT JOIN

(SELECT RFID, max( t1.time ) AS time

FROM attendance_images AS t1

WHERE t1.year = 2016 AND t1.month = 8 AND t1.day = 4 AND t1.time < 120000

GROUP BY t1.RFID

) keep

ON t.time = keep.time AND t.RFID = keep.RFID

WHERE keep.time IS NULL AND

t.year = 2016 AND t.month = 8 AND t.day = 4 AND t.time < 120000;

显然,不止一个RFID可以具有相同的最大时间,因此仅按时加入不起作用.

编辑:

您应该验证您确实要删除数据:

select ai.rfid, max(ai.time), min(ai.time), count(*)

from attendance_images ai

where ai.year = 2016 AND ai.month = 8 AND ai.day = 4 AND ai.time < 120000

group by ai.rfid

having min(ai.time) < max(ai.time);

我的猜测是,这将不会返回任何行,表明您没有这样的重复项.

您可以将having子句更改为count(*)> 1,看看你是否有重复项具有相同的时间价值.

编辑二:

查询中值的缩进表明时间存储为字符串,而不是整数.您可以尝试替换条件:

t.time < 120000

有:

t.time + 0 < 120000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值