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

如何基于ID合并两张SQL表的同意值,生成指定结构结果表

解决思路与SQL实现

要实现将两个表的同意值按ID合并,核心是使用全外连接(FULL OUTER JOIN),它能保留两个表中所有的ID记录,当某ID只在其中一张表存在时,另一张表的对应字段会自动填充为NULL,完全匹配你的需求。

最终SQL语句

SELECT
    COALESCE(a.id, b.id) AS id,
    a.consent_value AS a_consent_value,
    b.consent_value AS b_consent_value
FROM
    table_a a
FULL OUTER JOIN
    table_b b ON a.id = b.id
ORDER BY
    id;

关键说明

  • FULL OUTER JOIN:确保table_a和table_b中的所有ID都被包含,不会遗漏任何一方的记录
  • COALESCE(a.id, b.id):当ID只在其中一张表存在时,另一张表的id会是NULL,用这个函数取非空的ID作为结果表的id字段
  • 字段别名:将两个表的consent_value分别命名为a_consent_value和b_consent_value,对应结果表的要求
  • ORDER BY id:按ID排序让结果更规整,可选但建议加上

兼容方案(针对不支持FULL OUTER JOIN的数据库,如MySQL)

如果你的数据库不支持全外连接,可以先用UNION收集所有唯一ID,再分别左连接两个表:

SELECT
    combined.id,
    a.consent_value AS a_consent_value,
    b.consent_value AS b_consent_value
FROM
    (SELECT id FROM table_a UNION SELECT id FROM table_b) AS combined
LEFT JOIN table_a a ON combined.id = a.id
LEFT JOIN table_b b ON combined.id = b.id
ORDER BY combined.id;

测试结果

代入你的表数据后,执行上述SQL会生成你期望的结果:

id      a_consent_value       b_consent_value
111          Y                     Y
222          Y                     N
333          N                    NULL
444         NULL                   N
555         NULL                   N

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:53:11