Mysql中需要将表中某一个或多个字段值重复的数据删掉,从网上查了大部分sql形式如下,执行会报错
错误提示:不能在同一个sql语句中,先select一个表,然后再update这个表,有点类似于Java中不能在普通for each遍历集合的时候删除或修改集合元素一样。对上述sql进行了修改,将查询语句外面再套一个查询形成一张临时表,进而去重成功。
update test_table set is_deleted = 1 where id not in (select a.id from (select max(id) id from test_table group by vin,step,DATE_FORMAT(op_date,'%Y-%m-%d')) a);