在我的数据库中有一个包含冗余数据的表。这意味着它在多行中多次具有相同的数据。
我想删除所有冗余数据并只保留一条记录。问题是我的表现在没有主键或唯一键。但我有数据。
你能给我一个删除所有重复行的MySQL查询的例子吗?
DELETE
FROM enr_money_handover_detail
WHERE lastupdate IN (
SELECT lastupdate
FROM enr_money_handover_detail
GROUP BY lastupdate);
这显示错误,如
您无法指定目标表' enr_money_handover_detail'用于FROM子句中的更新"。
答案 0 :(得分:2)
SELECT DISTINCT是你的朋友。创建一个新表,并使用旧表中的select distinct从查询中插入。
答案 1 :(得分:2)
我认为您需要将当前表中所有不同记录的副本复制到其他表(备份)。
然后截断原始表,然后将备份表中的记录复制回原始表。
下面的命令将帮助您实现它。
CREATE TABLE handover_backup SELECT DISTINCT * FROM enr_money_handover_detail;
TRUNCATE TABLE enr_money_handover_detail;
INSERT INTO enr_money_handover_detail SELECT * FROM handover_backup;
希望这会对你有所帮助。
答案 2 :(得分:-1)
正如其他人所说,您可以使用Select Distinct,并以这种方式使用简单的删除查询:
DELETE FROM enr_money_handover_detail WHERE lastupdate IN (SELECT DISTINCT(lastupdate) FROM enr_money_handover_detail);