我在我的数据'上已经使用了duplacated行。表(每个日期每个客户两次)。
我想删除其中一个。
id - 主键
dat_id - 客户ID
dat_date - 日期
运行这样的查询并不会拆分这两行,所以我可以清楚地看到它们,我不能从那里删除它们:
SELECT
dat_id, dat_date, COUNT(*)
FROM
data
GROUP BY
dat_id, dat_date
HAVING
COUNT(*) > 1
并且显然无法在每个上运行SELECT * FROM data WHERE dat_date='2016-11-16' AND dat_id=769
并删除其中一个结果。
我使用PHPMyAdmin来显示舒适度。
我可以运行哪些查询以便以简单的方式显示结果以删除它们,或者我可以运行哪些查询来自动删除第二个重复数据?
答案 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)
注意:在尝试这个之前做一个备份,只是为了保证安全的声音,但它应该可以工作。