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

如何合并两张表并覆盖重复行:保留Table 1匹配行数据

实现表合并并优先保留指定表数据的SQL方案

需求说明

合并Table 1与Table 2为一张表:

  • 当两张表的Account Code相同时,保留Table 1中的Amount数据
  • 仅存在于其中一张表的行全部保留

示例数据

Table 1

Account CodeAccountNameProject TypeDescPeriodAmount
Bcc1AccountBoneAAGood11/30/2022700
Acc1AccountOneAAGood12/1/2022300

Table 2

Account CodeAccountNameProject TypeDescPeriodAmount
Acc1AccountOneAAGood12/1/2022220
Acc2AccountOneAAGood12/2/2022432

期望结果表

Account CodeAccountNameProject TypeDescPeriodAmount
Bcc1AccountBoneAAGood11/30/2022700
Acc1AccountOneAAGood12/1/2022300
Acc2AccountOneAAGood12/2/2022432

SQL查询语句

SELECT
    COALESCE(t1.`Account Code`, t2.`Account Code`) AS `Account Code`,
    COALESCE(t1.AccountName, t2.AccountName) AS AccountName,
    COALESCE(t1.`Project Type`, t2.`Project Type`) AS `Project Type`,
    COALESCE(t1.Desc, t2.Desc) AS Desc,
    COALESCE(t1.Period, t2.Period) AS Period,
    COALESCE(t1.Amount, t2.Amount) AS Amount
FROM Table1 t1
FULL OUTER JOIN Table2 t2
    ON t1.`Account Code` = t2.`Account Code`;

语句说明

  1. FULL OUTER JOIN:保留两张表中所有匹配和不匹配的行,确保无数据丢失
  2. COALESCE()函数:
    • 针对Amount字段,优先取Table1的值,仅当Table1无对应记录时才用Table2的值,满足相同Account Code保留Table1数据的规则
    • 其他字段用COALESCE()是为了确保无论数据来自哪张表,都能获取到有效值(若实际场景中匹配行的其他字段存在差异,可按需调整优先级)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:11:29