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

发布于 2024-07-14 16:31:45 字数 360 浏览 8 评论 0原文

Derby 不支持此语法:(

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

请参阅此错误)。 除了在 Java 中创建一个循环来进行选择并发送 N 个更新之外,还有其他解决方法吗?

[编辑] 请注意,我有 50 列和一个复杂的条件(与 x 和 EXISTS 等连接)。 所以我想避免重复 SELECT 50 次,请:)

Derby doesn't support this syntax:

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

(see this bug). Does anyone have a workaround other than creating a loop in Java which does the select and sends N updates back?

[EDIT] Note that I have 50 columns and a complex condition (joins with x and EXISTS and whatnot). So I'dd like to avoid repeating the SELECT 50 times, please :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

复古式 2024-07-21 16:31:45

我也会这么做,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), )

I too would do it the was rbobby siad but I'm also a MSSQL person.

Have you tried:

UPDATE x 
SET (col1)= ( SELECT a FROM y where y.fkfield = x.pkidfield),
(col21)= ( SELECT b FROM y where y.fkfield = x.pkidfield), )
山色无中 2024-07-21 16:31:45

我不确定这是有效的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

I'm not sure that's valid sql (I'm more a MS SQL guy so I could be way way off).

Normally I'd do:

update Orders
set Orders.Code = OtherOrders.Code,
    Orders.Name = OtherOrders.Name
from Orders inner join Orders as OtherOrders 
    on OtherOrders.OrderId = Orders.OrderId
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文