如何从MySQL DB中删除重复的行/

时间:2016-11-16 17:01:16

标签: mysql duplicates sql-delete

我在我的数据'上已经使用了duplacated行。表(每个日期每个客户两次)。

我想删除其中一个。

id - 主键

dat_id - 客户ID

dat_date - 日期

运行这样的查询并不会拆分这两行,所以我可以清楚地看到它们,我不能从那里删除它们:

SELECT
    dat_id, dat_date, COUNT(*)
FROM
    data
GROUP BY
    dat_id, dat_date
HAVING 
    COUNT(*) > 1

enter image description here

并且显然无法在每个上运行SELECT * FROM data WHERE dat_date='2016-11-16' AND dat_id=769并删除其中一个结果。 enter image description here

我使用PHPMyAdmin来显示舒适度。

我可以运行哪些查询以便以简单的方式显示结果以删除它们,或者我可以运行哪些查询来自动删除第二个重复数据?

2 个答案:

答案 0 :(得分:1)

您需要使用group by来删除重复项。发现第一行除外:

DELETE FROM Mytable 
WHERE RowID NOT IN (SELECT MIN(RowID) 
                    FROM Mytable 
                    GROUP BY Col1,Col2,Col3)

答案 1 :(得分:0)

如果您确定所有行都有多个数据,请执行以下操作:

SELECT row_id FROM tbl_name GROUP BY col, col, col

获得行ID后,您可以像这样删除:

DELETE FROM tbl_name WHERE row_id IN (the_row_ids_gotten_above)

或者您在一个查询中编写它,因为您正在使用PHPMYADMIN

DELETE FROM tbl_name WHERE row_id IN (SELECT row_id FROM tbl_name GROUP BY user_id)

编辑: 对于当天(2016-11-16)的人,请执行以下操作:

DELETE FROM tbl_name WHERE date = '2016-11-16' AND row_id IN (SELECT row_id FROM tbl_name GROUP BY user_id)

注意:在尝试这个之前做一个备份,只是为了保证安全的声音,但它应该可以工作。