Sql 使用JOIN的ibmdb2更新
我需要根据客户信息更新包含订单的表。这是我应该如何处理它的,但显然DB2不支持更新中的连接。我正在IBM iSeries上工作Sql 使用JOIN的ibmdb2更新,sql,join,sql-update,db2,Sql,Join,Sql Update,Db2,我需要根据客户信息更新包含订单的表。这是我应该如何处理它的,但显然DB2不支持更新中的连接。我正在IBM iSeries上工作 UPDATE lib.orders as o JOIN lib.customers as c ON o.cstmrid = c.id SET o.updatehere = 'NEWVALUE' WHERE c.info = 'VALUE' 关于这个话题有很多现成的问题,但没有一个能真正帮助我 谢谢 好吧,现在真的很晚了,但如果有人读到这篇文章:没
UPDATE lib.orders as o
JOIN lib.customers as c
ON o.cstmrid = c.id
SET o.updatehere = 'NEWVALUE'
WHERE c.info = 'VALUE'
关于这个话题有很多现成的问题,但没有一个能真正帮助我
谢谢 好吧,现在真的很晚了,但如果有人读到这篇文章:没有一条评论/答案是正确的。重要的一点是,我正在开发一个iseries,它使用DB2UDB,既不支持更新时的连接,也不支持合并(至少是我们使用的版本)。
我认为唯一可行的方法是在WHERE EXISTS子句中加入一个。我建议如下:
UPDATE lib.orders
SET updatehere = 'NEWVALUE'
WHERE cstrmid in (
SELECT id
FROM lib.customers
WHERE info = 'VALUE'
)
事实上,update语句有四个主要部分:
- 可能具有指定的别名
- 你的例子用了一个
- 我的建议不需要
- 可以是单个字段,如您的示例中所示
- 可以是元组,包含多个字段
- 可以是单个值或值的元组,具体取决于项2
- 可以是子查询的结果
- 必须根据需要返回单个值或元组以匹配项2
- 可以针对项目1中指定的表进行联接,以确保为项目1表中的不同行输出不同的值
- 可以是一个或多个条件
- 如果不指定此选项,DB/2将遍历表中的所有记录
- 可以包含子查询
- 如果在第3项中有一个子查询,并且与之匹配的行与该子查询的任何结果都不匹配,则将为第2项的字段分配空值
- 第2项是多个字段的元组
- 项3是返回多个值的子查询,与项1中指定的表连接
- 项4使用的子查询与项3中使用的子查询类似,但返回的是联接值,而不是字段的更新值
我已经在iSeries上的DB/2上完成了所有这些。我从未使用过合并,因为正如您所注意到的,并不是所有版本的DB/2都支持合并。没有一个真正帮助您?或者是没有一个和你的完全一样,或者没有一个可以被复制和粘贴?请阅读此可能的副本