DB2支持以下语法:
UPDATE DEST D SET (AAA,BBB) = (
SELECT MAX(Z.AAA), MAX(Z.BBB) FROM OTHER O WHERE O.ID = D.ID
)
即。我可以运行一个select,它返回多个列并将结果复制到目标表的各个列(要更新的列)。
Derby只允许语法:
UPDATE table-Name [[AS] correlation-Name]
SET column-Name = Value
[ , column-Name = Value} ]*
[WHERE clause]
这意味着当我需要以某种方式对select的结果进行分组时,我会遇到问题。有没有比将更新拆分为两个语句或在Java中循环本地(即提交数百万个UPDATE语句)更好的解决方案?
答案 0 :(得分:3)
据推测,你可以这样做:
UPDATE DEST D
SET AAA = (SELECT MAX(Z.AAA) FROM OTHER O WHERE O.ID = D.ID),
BBB = (SELECT MAX(Z.BBB) FROM OTHER O WHERE O.ID = D.ID)
我没有说任何有关效率的内容 - 但它可能比将更新拆分为两个语句或在循环中本地执行更有效。