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

如何处理两表重复行:保留首表指定列的唯一记录

保留主表重复记录,移除副表重复行

需求:存在两张表table a和table b,当指定列value的值重复时,保留table a的记录,移除table b中对应的重复行。

原表数据

table a

idvaluenamepid
155a27
256b23
357c22

table b

idvaluenamepid
155a29
558d23
659e22

预期结果

idvaluenamepid
155a27
256b23
357c22
558d23
659e22

需要移除的table b中的行:

idvaluenamepid
155a29

实现方案

方案1:查询合并后的结果(不修改原表)

如果仅需获取合并后的数据集,无需改动原表,可通过UNION ALL结合子查询过滤:

SELECT * FROM `table a`
UNION ALL
SELECT * FROM `table b`
WHERE `value` NOT IN (SELECT `value` FROM `table a`);

也可用左连接方式过滤:

SELECT b.* FROM `table b` b
LEFT JOIN `table a` a ON b.`value` = a.`value`
WHERE a.`value` IS NULL
UNION ALL
SELECT * FROM `table a`;

方案2:删除table b中的重复行(修改原表)

若需直接删除table b中与table a的value重复的行,执行以下删除语句:

DELETE FROM `table b`
WHERE `value` IN (SELECT `value` FROM `table a`);

部分数据库(如MySQL)更推荐关联删除,避免子查询性能问题:

DELETE b FROM `table b` b
JOIN `table a` a ON b.`value` = a.`value`;

注意:执行删除操作前建议先备份数据,或用SELECT验证待删除行是否正确:

SELECT * FROM `table b` b
JOIN `table a` a ON b.`value` = a.`value`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:55:17