2009-03-04 12 views
2

Derby unterstützt diese Syntax nicht:Wie kann ich UPDATE x SET (col1, col2) = (SELECT a, b VON y) in Derby emulieren?

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

(siehe this bug). Hat jemand eine andere Problemumgehung als das Erstellen einer Schleife in Java, die die Auswahl durchführt und N Aktualisierungen zurücksendet?

[EDIT] Beachten Sie, dass ich 50 Spalten und eine komplexe Bedingung (Joins mit X und EXISTS und whatnot). Also ich möchte vermeiden, die SELECT 50 mal zu wiederholen, bitte :)

Antwort

0

Ich bin mir nicht sicher, dass das sql gültig ist (ich bin eher ein MS SQL Typ, also könnte ich weit weg sein).

Normalerweise würde ich tun:

update Orders 
set Orders.Code = OtherOrders.Code, 
    Orders.Name = OtherOrders.Name 
from Orders inner join Orders as OtherOrders 
    on OtherOrders.OrderId = Orders.OrderId 
+0

Leider FROM nicht in Update-Anweisungen –

2

ich auch tun würde es das war rbobby Siad, aber ich bin auch eine MSSQL Person.

Haben Sie versucht:

UPDATE x 
SET (col1)= (SELECT a FROM y where y.fkfield = x.pkidfield), 
(col21)= (SELECT b FROM y where y.fkfield = x.pkidfield),) 
+0

Ja :(erlaubt ist, hier das Problem ist, dass ich 50 Spalten und eine komplexe SELECT haben –

+0

Es in Derby Datenbank funktioniert nicht. . –