martedì 26 agosto 2008

Update da Select con Sql Server

Supponiamo di trovarci in questa situazione: dobbiamo aggiornare dei record in database e come dati di partenza abbiamo il risultato di una query. Le soluzioni sono 2: o modifichiamo la tabella a mano (il che con migliaia di record da modificare potrebbe essere un po fastidioso) oppure possiamo usare uno scriptino T-Sql che fa esattamente quello che ci serve (a patto però di avere un campo nella query che ci permetta di effettuare un join con la tabella da aggiornare).
Il codice è il seguente:

UPDATE T
    SET T.Campo1a = Q.Campo2a,
    T.Campo1b = Q.Campo2b
FROM
    (SELECT CampoID, Campo2a, Campo2b
    FROM Tabella WHERE Condizione) Q
INNER JOIN TabellaDaModificare T
    ON T.CampoID = Q.CampoID


Dove T è l'alias utilizzato per la tabella da modificare e Q è l'alias della Select.
Il Join farà in modo che i campi si aggiornino solo dovo apportuno (praticamente è come se gli facessimo fare un "Update ... Where")

3 commenti:

Anonimo ha detto...

Grazie,
questo post è chiarissimo e mi è stato molto utile!
Alessandra

Anonimo ha detto...

Grazie mille, mi è stato utilissimo.

Anonimo ha detto...

Grazie! sei stato chiaro e coinciso!