我需要根据非重复字段删除一些重复数据。
示例数据:
|status|Size|id# |income|scan_date |
| 0 | 3 |123456| 1000 |2015-10-16|
| 1 | 3 |123456| 1000 |2015-10-16|
| 1 | 4 |112345| 900 |2015-09-05|
| 0 | 7 |122345| 700 |2015-10-01|
当id#和scan_date相同时,我只需要删除状态为“0”的行。
答案 0 :(得分:2)
delete from table
where status=0
and (id, scan_date) in
(select id, scan_date from
(select id, scan_date from table
group by id, scan_date
having count(*) >=2) t1)
你需要mysql中的额外子查询,因为mysql不允许从正在更新或删除的表中进行选择。
更新:请参阅我创建的this sqlfiddle。我认为你删除了带有t1别名的子查询,即使我明确警告过你这很重要!