如何在Derby中模拟UPDATE x SET(col1,col2)=(SELECT a,b FROM y)?

时间:2009-03-04 16:10:58

标签: sql sql-update derby

Derby不支持这种语法:

UPDATE x SET (col1, col2, ...) = ( SELECT a,b,... FROM y ... )

(见this bug)。有没有人有一个解决方法,除了在Java中创建一个循环,进行选择并发回N个更新?

[编辑] 请注意,我有50列和复杂条件(与x和EXISTS以及诸如此类的东西连接)。所以我想避免重复SELECT 50次,请:)

2 个答案:

答案 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