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

Oracle SQL如何保留table1全量行并关联追加table2的id列

Oracle SQL 实现表合并方案

要实现保留table1所有行,并在name匹配时追加table2的id字段,用**左连接(LEFT JOIN)**是最直接的方案——它会完整保留左表(table1)的所有记录,仅将右表(table2)中匹配到的id值关联过来,未匹配的id字段会显示为NULL。

基础查询实现

SELECT 
    t1.name,
    t1.age,
    t1.weight,
    t1.height,
    t2.id
FROM 
    table1 t1
LEFT JOIN 
    table2 t2 ON t1.name = t2.name;

特殊场景处理

如果table2中存在同一name对应多个id的情况,上述查询会返回多条重复的table1记录(对应不同的id)。若希望每个table1记录仅保留一个id(比如取最大/最小id),可以用聚合函数配合GROUP BY:

SELECT 
    t1.name,
    t1.age,
    t1.weight,
    t1.height,
    MAX(t2.id) AS id  -- 或MIN(t2.id),按需选择
FROM 
    table1 t1
LEFT JOIN 
    table2 t2 ON t1.name = t2.name
GROUP BY 
    t1.name, t1.age, t1.weight, t1.height;

生成新表

如果需要将结果直接生成一张新表,而非仅查询,可以在语句前添加CREATE TABLE:

CREATE TABLE target_table AS
SELECT 
    t1.name,
    t1.age,
    t1.weight,
    t1.height,
    t2.id
FROM 
    table1 t1
LEFT JOIN 
    table2 t2 ON t1.name = t2.name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:22:01