Derby 不支持这种语法:
UPDATE x SET (col1, col2, ...) = ( SELECT a,b,... FROM y ... )
(见这个错误)。除了在 Java 中创建一个循环来执行选择并发送 N 个更新之外,还有其他人有解决方法吗?
[编辑]请注意,我有 50 列和一个复杂的条件(与 x 和 EXISTS 等连接)。所以我想避免重复 SELECT 50 次,请:)
Derby 不支持这种语法:
UPDATE x SET (col1, col2, ...) = ( SELECT a,b,... FROM y ... )
(见这个错误)。除了在 Java 中创建一个循环来执行选择并发送 N 个更新之外,还有其他人有解决方法吗?
[编辑]请注意,我有 50 列和一个复杂的条件(与 x 和 EXISTS 等连接)。所以我想避免重复 SELECT 50 次,请:)
我也会这样做,是 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), )
我不确定那是有效的 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