Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Istruzione di aggiornamento per più ID

Questo perché stai tentando di impostare column3 a un risultato restituito e SQL si aspetta che sia un solo valore (scalare). Il motore SQL si confonde quando gli si passa più di un valore di ritorno (quale dovrebbe usare?... non presuppone di scorrere i risultati). Quindi, se vuoi aggiornare un intero set di risultati, devi creare una sottotabella dalla tua query e unirti a quella. La tua query dovrebbe assomigliare di più a questa

UPDATE Table3
SET Column3 = subtable.value
FROM Table3 
    JOIN (
        select t2.column3+t1.column3 as value, t1.id
        from table2 t2 with (nolock) join table1 t1
        on table2.id=t1.id
        where table2.id IN (100,101)
    ) AS subtable
    ON subtable.id = Table3.id
WHERE table3.id IN (100, 101)

Sotto questo presupposto che table3.id corrisponda agli altri ID, non hai nemmeno bisogno del where table2.id IN ...