Db2 使用联接进行AS400更新时不应出现“From”

Db2 使用联接进行AS400更新时不应出现“From”,db2,sql-update,Db2,Sql Update,我试图将列更新为今天的日期,前提是它与子查询结果集中的数据相匹配 我已经在sql中对其进行了处理,但我正在尝试转换为DB2操作系统:i5/OS版本:V5R4M0 这在使用sql server时可以很好地工作,但AS400给了我一个“非预期”错误 DB2fori不支持从子选择更新。在上可以看到,只能指定表或视图名称 我想你可以重写它来做这样的事情,但显然我没有什么可测试的 更新TST.INV I 设置DLI=? 其中I.PRICE

我试图将列更新为今天的日期,前提是它与子查询结果集中的数据相匹配

我已经在sql中对其进行了处理,但我正在尝试转换为DB2操作系统:i5/OS版本:V5R4M0


这在使用sql server时可以很好地工作,但AS400给了我一个“非预期”错误

DB2fori不支持从子选择更新。在上可以看到,只能指定表或视图名称

我想你可以重写它来做这样的事情,但显然我没有什么可测试的

更新TST.INV I 设置DLI=? 其中I.PRICE<1000 和IC'C' 而且不存在 选择1 从TST.LOCS L 其中I.PART=L.LPART
是吗?参数标记?你想把更新后的值传进来吗?@Charles是的,没错。我忘了提到这是oledb库中的C。与其说这是一个简单的投票,不如说这是一个很好的理由。我还在这里学习,所以我的699分以前是700分。是的,结果很好。非常感谢。我们正在将旧技术转换为.net,有时我仍然会被DB/2的差异所困扰。与此同时,我们仍在使用原始数据库,因此在切换之前,所有内容都保持同步。谢谢你的帮助!
UPDATE TST.INV                                             
SET  DLI = ?                                             
FROM (SELECT Inv.PART, Inv.DLI                                                   
FROM TST.INV Inv left join TST.LOCS L ON Inv.PART = L.LPART                                          
WHERE L.LPART IS NULL AND (IC != 'C') AND (I.PRICE < 1000)                                        
) i    
WHERE  PARTNO = i.PARTN