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 回繰り返すことは避けたいと思います:)
私もそうしますが、私は 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