Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Anweisung für mehrere IDs aktualisieren

Dies liegt daran, dass Sie versuchen, column3 festzulegen zu einem zurückgegebenen Ergebnis, und SQL erwartet, dass dies nur ein Wert (Skalar) ist. Die SQL-Engine wird verwirrt, wenn Sie ihr mehr als einen Rückgabewert übergeben (welchen sollte sie verwenden? ... sie geht nicht davon aus, die Ergebnisse zu durchlaufen). Wenn Sie also einen gesamten Ergebnissatz aktualisieren möchten, müssen Sie eine Untertabelle aus Ihrer Abfrage erstellen und dieser beitreten. Ihre Abfrage sollte ungefähr so ​​aussehen

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)

Unter dieser Annahme, dass table3.id mit den anderen IDs übereinstimmt, brauchen Sie auch wirklich nicht das innere where table2.id IN ...