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

如何用SQL合并两张表并在同行展示差异值?

SQL合并两张表并展示Count列差异的解决方案

你需要用**全外连接(FULL OUTER JOIN)**来实现需求,UNION之所以不行是因为它是纵向合并行记录,而你要的是把同一Name对应的两个Count值横向展示在同一行。

具体SQL语句

SELECT
    COALESCE(t1.Name, t2.Name) AS Name,
    COALESCE(t1.Count, 0) AS "Count table 1",
    COALESCE(t2.Count, 0) AS "Count table 2"
FROM Table1 t1
FULL OUTER JOIN Table2 t2 
    ON t1.Name = t2.Name
ORDER BY Name;

语句说明

  • FULL OUTER JOIN:保留两张表中所有的Name记录,不管另一张表是否有匹配的Name,这样能覆盖Fith(仅在Table1)和Sixth(仅在Table2)这类情况。
  • COALESCE函数:用来处理缺失值,当某张表没有对应Name的Count时会返回NULL,用COALESCE(字段, 0)把NULL替换成0,符合预期结果的展示要求。
  • ORDER BY Name:让结果按Name排序,和你给出的预期结果顺序一致,可根据需求调整。

如果你的数据库不支持FULL OUTER JOIN(比如MySQL),可以用UNION ALL先收集所有Name,再分别关联两张表:

SELECT
    all_names.Name,
    COALESCE(t1.Count, 0) AS "Count table 1",
    COALESCE(t2.Count, 0) AS "Count table 2"
FROM (
    SELECT Name FROM Table1
    UNION ALL
    SELECT Name FROM Table2
) AS all_names
LEFT JOIN Table1 t1 ON all_names.Name = t1.Name
LEFT JOIN Table2 t2 ON all_names.Name = t2.Name
GROUP BY all_names.Name
ORDER BY all_names.Name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:25:53