sql >> Databasteknik >  >> RDS >> Sqlserver

Uppdatera uttalande för flera id

Detta beror på att du försöker ställa in column3 till ett returnerat resultat, och SQL förväntar sig att det endast är ett värde (skalär). SQL-motorn blir förvirrad när du skickar den mer än ett returvärde (vilket ska den använda?...den förutsätter inte att det går igenom resultaten). Så om du vill uppdatera en hel resultatuppsättning måste du skapa en undertabell från din fråga och gå med på den. Din fråga borde se ut mer så här

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)

Under detta antagande att table3.id matchar de andra id:na, behöver du verkligen inte den inre where table2.id IN ...



  1. Vad är det för fel på Cursors?

  2. Fel java.sql.SQLEundantag:ORA-00911:ogiltigt tecken

  3. MySQL jämförelseoperator, mellanslag

  4. MySQL låsning i Duplicate Key Error