根据非重复字段从表中删除重复项

时间:2015-10-29 20:47:43

标签: mysql

我需要根据非重复字段删除一些重复数据。

示例数据:

|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”的行。

1 个答案:

答案 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别名的子查询,即使我明确警告过你这很重要!