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

MySQL 如何删除event_id重复的所有行且不保留任意重复行

实现方案

方法1:直接删除不符合要求的行

先执行查询确认筛选结果符合预期:

SELECT * FROM 你的表名 
WHERE Event_id IN (
    SELECT Event_id FROM 你的表名 
    GROUP BY Event_id 
    HAVING COUNT(*) = 1
);

确认无误后执行删除操作:

DELETE FROM 你的表名 
WHERE Event_id NOT IN (
    -- 套一层临时表规避MySQL同表查询删除的限制
    SELECT Event_id FROM (
        SELECT Event_id FROM 你的表名 
        GROUP BY Event_id 
        HAVING COUNT(*) = 1
    ) AS temp
);

方法2:新建表保留符合要求的数据(适合数据量较大的场景,效率更高)

  • 创建和原表结构一致的新表
CREATE TABLE 新表名 LIKE 原表名;
  • 插入筛选后的合规数据
INSERT INTO 新表名 
SELECT * FROM 原表名 
GROUP BY Event_id 
HAVING COUNT(*) = 1;
  • 确认新表数据符合预期后,替换原表
DROP TABLE 原表名;
RENAME TABLE 新表名 TO 原表名;

注意:所有删除/表替换操作前请务必提前备份数据,先执行SELECT查询确认筛选结果符合预期再执行变更操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:45:04