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

Oracle SQL多表关联如何加入movement表并保留其全量数据

解决方案

要满足保留全部符合条件的movement表记录的要求,核心是将筛选后的movement作为左连接的主表,其余关联表全部使用LEFT JOIN关联,即使后续关联表没有匹配数据,主表记录也会完整保留,对应字段返回NULL,最终返回行数和单独查询符合条件的movement数据一致,均为1500条。

最终查询语句

SELECT 
    m.movement_id,
    t.transction_id,
    pt.name,
    pa.date
FROM 
    movement m
LEFT JOIN transction t 
    ON t.transction_id = m.movement_id
LEFT JOIN position_trans pt
    ON t.transction_id = pt.transction_id
LEFT JOIN position_acc pa
    ON pt.postion_id = pa.postition_id
WHERE 
    m.name = 'CASH';

注意事项

  • 不要使用旧的隐式内连接语法(即FROM后用逗号分隔多张表),隐式连接默认是内连接,会直接过滤掉没有匹配关联条件的行,无法满足保留全部movement记录的要求
  • m.name = 'CASH'的筛选条件要写在WHERE子句中对主表直接过滤,不要放到任意LEFT JOIN的ON条件中,避免生成多余无效的空记录
  • 注意核对字段拼写是否和实际表结构一致,你提供的示例语句中存在transction(疑似应为transaction)、postion_id/postition_id(疑似应为position_id)的拼写误差,若实际字段为标准拼写请自行替换后再执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:48:02