在Pentaho SQL Editor中执行DML报错,如何修改目标表数据?
问题解决建议
首先,你原SQL的核心问题是未关联表A:你的需求是基于表A的AA列值为asisdata来更新表B,但你写的语句只修改了B中BB本身等于asisdata的行,完全没用到表A的条件,这既不符合需求,也可能因工具限制导致执行失败。
修正后的SQL语句
假设表A和表B存在共同关联键(比如ID,请根据实际业务替换),正确的SQL应该关联两张表:
-- 方式1:用EXISTS关联表A的条件 UPDATE B SET BB = 'tobedata' WHERE EXISTS ( SELECT 1 FROM A WHERE A.关联键 = B.关联键 AND A.AA = 'asisdata' ); -- 方式2:用JOIN直接关联两张表 UPDATE B JOIN A ON A.关联键 = B.关联键 SET B.BB = 'tobedata' WHERE A.AA = 'asisdata';
适合的功能流程选择
针对你试过的三个流程,推荐如下:
- 排除第一个流程:
input table -> insert/update -> output table通常仅支持单表的插入或更新操作,无法配置跨表关联规则,不满足你的需求。 - 优先选第二个流程:
input table -> update -> output table是可视化场景下的最优方案。你需要同时将表A和表B作为输入源,在update组件中配置两张表的关联键,然后设置更新规则:当A.AA等于asisdata时,将B.BB修改为tobedata,最后输出到目标表B即可。 - 可选第三个流程:
input table -> execute SQL script -> output table也可行,但需注意两点:一是使用上面修正后的关联SQL;二是确认你的工具允许执行UPDATE这类DML语句(部分工具的SQL执行组件默认仅支持查询,需开启对应权限)。
内容的提问来源于stack exchange,提问作者SOO07
相关产品推荐
相关产品推荐

