Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Instrução de atualização para vários IDs


Isso ocorre porque você está tentando definir column3 para um resultado retornado, e o SQL espera que seja apenas um valor (escalar). O mecanismo SQL fica confuso quando você passa mais de um valor de retorno (qual deve usar?... ele não assume a iteração pelos resultados). Portanto, se você deseja atualizar um conjunto de resultados inteiro, precisa criar uma subtabela a partir de sua consulta e ingressar nela. Sua consulta deve ser mais parecida com esta
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)

Sob esta suposição de que table3.id corresponde aos outros ids, você também não precisa do where table2.id IN ...