sql >> Base de Datos >  >> RDS >> Sqlserver

Declaración de actualización para múltiples identificaciones

Esto se debe a que está intentando configurar column3 a un resultado devuelto, y SQL espera que sea un solo valor (escalar). El motor de SQL se confunde cuando le pasa más de un valor de retorno (¿cuál debería usar?... no asume iterar a través de los resultados). Por lo tanto, si desea actualizar un conjunto de resultados completo, debe crear una subtabla a partir de su consulta y unirse a ella. Su consulta debería parecerse más a esto

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)

Bajo esta suposición de que table3.id coincide con los otros id, tampoco necesita el where table2.id IN ...