credo che è possibile omettere l'aggiornamento delle colonne "non desiderati", regolando le altre risposte come segue:
update table set columnx = (case when condition1 then 25 end), columny = (case when condition2 then 25 end)
Da quanto ho capito, questo si aggiornerà solo quando la condizione è soddisfatta.
Dopo aver letto tutti i commenti, questo è il più efficiente:
Update table set ColumnX = 25 where Condition1 Update table set ColumnY = 25 where Condition1
tabella di esempio:
CREATE TABLE [dbo].[tblTest]( [ColX] [int] NULL, [ColY] [int] NULL, [ColConditional] [bit] NULL, [id] [int] IDENTITY(1,1) NOT NULL ) ON [PRIMARY]
dati di esempio:
Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 0) Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 0) Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 1) Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 1) Insert into tblTest (ColX, ColY, ColConditional) values (1, null, null) Insert into tblTest (ColX, ColY, ColConditional) values (2, null, null) Insert into tblTest (ColX, ColY, ColConditional) values (null, 1, null) Insert into tblTest (ColX, ColY, ColConditional) values (null, 2, null)
Ora presumo si può scrivere un condizionale che gestisce i null. Per il mio esempio, sto assumendo che tu abbia scritto un simile condizionale che valuti su True, False o Null. Se hai bisogno di aiuto con questo, fammi sapere e farò del mio meglio.
Ora l'esecuzione di questi due righe di codice fa infatti il cambiamento X a 25 se e solo se ColConditional è vero (1) e Y a 25 se e solo se ColConditional è False (0)
Update tblTest set ColX = 25 where ColConditional = 1 Update tblTest set ColY = 25 where ColConditional = 0
P.S. Il caso nullo non è mai stato menzionato nella domanda originale o alcun aggiornamento alla domanda, ma come puoi vedere, questa risposta molto semplice li gestisce comunque.
Supponendo che tutto nella stessa tabella, sì.Puoi sempre eseguirlo in una transazione, e rollback su errore, per vedere di persona. –
Non sono sicuro di cosa intendi. Ho provato a mettere un condizionale per la colonna, ma non funziona. Funziona per un'istruzione select, ma non per una dichiarazione di aggiornamento. (Selezionare (caso (condizione) quando true poi columnx else columny end) da myTable .... l'aggiornamento non funziona, e posso vedere perché. – pqsk