2009-03-04 9 views
2

Derby ne supporte pas cette syntaxe:Comment puis-je émuler UPDATE x SET (col1, col2) = (SELECT a, b FROM y) dans Derby?

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

(voir this bug). Est-ce que quelqu'un a une solution de contournement autre que la création d'une boucle en Java qui fait la sélection et envoie N mises à jour en arrière?

[EDIT] Notez que j'ai 50 colonnes et une condition complexe (joint avec x et EXISTS et autres joyeusetés). Donc je voudrais éviter de répéter le SELECT 50 fois, s'il vous plaît :)

Répondre

0

Je ne suis pas sûr que ce soit SQL valide (je suis plus un mec MS SQL, donc je pourrais être bien loin).

Normalement, je ferais:

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

Malheureusement, de n'est pas autorisé dans les instructions UPDATE :( –

2

Moi aussi, je fais la rbobby était Siad mais je suis aussi une personne MSSQL.

Avez-vous essayé:

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

Oui, le problème est ici que j'ai 50 colonnes et un complexe SELECT –

+0

Il ne fonctionne pas dans la base de données derby. . –

Questions connexes