Derby不支持这种语法:
UPDATE x SET (col1, col2, ...) = ( SELECT a,b,... FROM y ... )
(见this bug)。有没有人有一个解决方法,除了在Java中创建一个循环,进行选择并发回N个更新?
[编辑] 请注意,我有50列和复杂条件(与x和EXISTS以及诸如此类的东西连接)。所以我想避免重复SELECT 50次,请:)
答案 0 :(得分:2)
我也会这样做是rbobby siad,但我也是MSSQL人员。
你试过了吗?
UPDATE x
SET (col1)= ( SELECT a FROM y where y.fkfield = x.pkidfield),
(col21)= ( SELECT b FROM y where y.fkfield = x.pkidfield), )
答案 1 :(得分:0)
我不确定这是有效的sql(我更像是一个MS SQL的人,所以我可以离开)。
通常我会这样做:
update Orders
set Orders.Code = OtherOrders.Code,
Orders.Name = OtherOrders.Name
from Orders inner join Orders as OtherOrders
on OtherOrders.OrderId = Orders.OrderId