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

技术需求:对比tbl1与tbl2数据表数据并整合至新表tbl_new

数据表对比合并解决方案

没问题,我来帮你实现把tbl01和tbl02的数据对比后合并到tbl_new的需求!

核心思路

我们需要保留两张表中所有的物料组(mat_group)记录,同时展示各自的价格,所以用**全外连接(FULL OUTER JOIN)**是最合适的——它能同时包含只在tbl01存在、只在tbl02存在,以及两边都存在的mat_group。

实现SQL代码

下面的语句会直接创建tbl_new并填充对比后的数据:

CREATE TABLE tbl_new AS
SELECT
    t1.price AS t1_price,
    t2.price AS t2_price,
    -- 取非空的mat_group,确保总有值
    COALESCE(t1.mat_group, t2.mat_group) AS mat_group,
    -- 同理,取非空的major字段
    COALESCE(t1.major, t2.major) AS major
FROM tbl01 t1
FULL OUTER JOIN tbl02 t2
ON t1.mat_group = t2.mat_group
-- 按物料组排序,方便查看
ORDER BY mat_group;

预期生成的tbl_new结果

执行后你会得到这样的表:

t1_pricet2_pricemat_groupmajor
100150a001a
200180a002a
450320a003a
520220b001b
250350b002b
170NULLc001c
80NULLc002c
NULL520c003c

兼容不支持FULL OUTER JOIN的数据库(比如MySQL)

如果你的数据库不支持全外连接,可以用LEFT JOIN + UNION来模拟:

CREATE TABLE tbl_new AS
-- 先取tbl01所有记录,匹配tbl02的价格
SELECT
    t1.price AS t1_price,
    t2.price AS t2_price,
    t1.mat_group,
    t1.major
FROM tbl01 t1
LEFT JOIN tbl02 t2 ON t1.mat_group = t2.mat_group
-- 再加上tbl02中独有的记录
UNION
SELECT
    NULL AS t1_price,
    t2.price AS t2_price,
    t2.mat_group,
    t2.major
FROM tbl02 t2
LEFT JOIN tbl01 t1 ON t2.mat_group = t1.mat_group
WHERE t1.mat_group IS NULL
ORDER BY mat_group;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:15