2

Derby は次の構文をサポートしていません。

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

(このバグを参照してください)。Javaでループを作成してN個の更新を選択して送り返す以外の回避策はありますか?

[編集] 50 列と複雑な条件 (x と EXISTS などとの結合) があることに注意してください。したがって、SELECT を 50 回繰り返すことは避けたいと思います:)

4

2 に答える 2

2

私もそうしますが、私は MSSQL の人でもあります。

やってみました:

UPDATE x 
SET (col1)= ( SELECT a FROM y where y.fkfield = x.pkidfield),
(col21)= ( SELECT b FROM y where y.fkfield = x.pkidfield), )
于 2009-03-04T19:36:00.583 に答える
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
于 2009-03-04T16:21:59.893 に答える