You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除MySQL表中postanski_broj列重复行并设置唯一索引?

解决MySQL表重复邮政编码行并添加唯一索引的方法
  • 第一步:清理重复行,保留唯一记录
    先创建临时表存储每个postanski_broj需要保留的ID(这里以保留最大ID为例,若需保留最小ID,将MAX(id)替换为MIN(id)):

    CREATE TABLE tmp_poste AS
    SELECT MAX(id) AS keep_id
    FROM poste
    GROUP BY postanski_broj;
    

    接着删除不在临时表中的重复行:

    DELETE FROM poste
    WHERE id NOT IN (SELECT keep_id FROM tmp_poste);
    

    最后删除临时表:

    DROP TABLE tmp_poste;
    
  • 第二步:添加唯一索引
    此时表内postanski_broj已无重复值,执行以下语句添加唯一索引:

    ALTER TABLE poste ADD UNIQUE INDEX idx_postanski_br (postanski_broj);
    
  • 报错原因说明

    • 第一条语句报错1062:表中存在重复的postanski_broj值,唯一索引要求列值唯一,因此直接添加会触发冲突报错。
    • 第二条语句报错1064:ALTER IGNORE语法在MySQL 5.7及更高版本已被移除,属于无效语法。
  • 可选验证步骤
    清理完成后,可执行以下语句确认无重复值:

    SELECT postanski_broj, COUNT(*)
    FROM poste
    GROUP BY postanski_broj
    HAVING COUNT(*) > 1;
    

    若返回空结果,说明重复行已清理完毕。

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:10:32