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

求助:基于5列删除MariaDB表中重复行(无SQL基础)

删除MariaDB表中重复记录的方案

前提说明

你的表结构及示例数据如下:

loading_tracking_idloading_idloading_numtimeeventnamename_en
38306401111111054161020202021-07-01 01:59:00officeLondonUK
3830641222224020556564442022-03-02 08:02:13courierParisFR
38306421111111054161020202021-07-01 01:59:00officeLondonUK
38306431111111054161020202021-07-01 01:59:00officeLondonUK
38306441111111054161020202021-07-01 01:59:00officeLondonUK
38306451111111054161020202021-07-01 01:59:00officeLondonUK

需求为:删除loading_id、loading_num、time、event、name五列完全重复的记录,仅保留任意一条。服务器版本为10.3.37-MariaDB。

操作步骤(必看)

  1. 先备份表:执行删除前务必备份数据,避免误删无法恢复。备份命令:
CREATE TABLE your_table_backup AS SELECT * FROM your_table;

(将your_table替换为你的实际表名)

  1. 选择以下任一方法执行删除:

方法一:使用CTE(推荐,逻辑清晰)

此方法会保留每组重复记录中loading_tracking_id最小的那条,删除其余重复项:

WITH duplicates AS (
    SELECT 
        loading_tracking_id,
        ROW_NUMBER() OVER (
            PARTITION BY loading_id, loading_num, time, event, name
            ORDER BY loading_tracking_id
        ) AS row_num
    FROM your_table
)
DELETE FROM your_table
WHERE loading_tracking_id IN (
    SELECT loading_tracking_id FROM duplicates WHERE row_num > 1
);

方法二:使用子查询(兼容更早版本)

如果CTE执行报错,可使用此方法,同样保留loading_tracking_id最小的记录:

DELETE t1 FROM your_table t1
JOIN your_table t2 
ON t1.loading_id = t2.loading_id
AND t1.loading_num = t2.loading_num
AND t1.time = t2.time
AND t1.event = t2.event
AND t1.name = t2.name
AND t1.loading_tracking_id > t2.loading_tracking_id;

注意事项

  • 所有代码中的your_table必须替换为你的实际表名
  • 可先执行查询语句验证要删除的记录:
    • 方法一对应查询:SELECT * FROM duplicates WHERE row_num > 1;
    • 方法二对应查询:SELECT t1.* FROM your_table t1 JOIN your_table t2 ON t1.loading_id = t2.loading_id AND t1.loading_num = t2.loading_num AND t1.time = t2.time AND t1.event = t2.event AND t1.name = t2.name AND t1.loading_tracking_id > t2.loading_tracking_id;
  • 删除完成后,可通过SELECT * FROM your_table;查看结果是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:01:01