我在MySQL中有一张名为ZipCode的表,它包含以下字段:id、zipcode、city、state。该表中存在一些重复记录,即同一个邮政编码出现了两次。
我想要删除所有重复的邮政编码,并且每个邮政编码只保留一次。
如何正确处理这个问题呢?
我在MySQL中有一张名为ZipCode的表,它包含以下字段:id、zipcode、city、state。该表中存在一些重复记录,即同一个邮政编码出现了两次。
我想要删除所有重复的邮政编码,并且每个邮政编码只保留一次。
如何正确处理这个问题呢?
-- remove duplicates
DELETE z1
FROM ZipCode z1, ZipCode z2
WHERE z1.zipcode = z2.zipcode AND z2.id < z1.id;
-- add a primary key
ALTER TABLE ZipCode ADD PRIMARY KEY (zipcode);
-- or a unique key
ALTER TABLE ZipCode ADD UNIQUE INDEX zipcode_unique (zipcode);
CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1 GROUP BY zip;
DROP TABLE old_table;
RENAME TABLE new_table TO old_table;
CREATE TABLE new_table LIKE old_table; INSERT INTO new_table SELECT * FROM old_table WHERE 1 GROUP BY zip;
,以避免重新创建索引等步骤。 - Michael Mior试试这个,它运行得很好
DELETE
FROM
insurance_policy_customers ipc
WHERE
ipc.id NOT IN (SELECT
min(ipc.id)
FROM
insurance_policy_customers ipc
GROUP BY
ipc.resident_insurance_policy_id )