sql >> Database >  >> RDS >> Sqlserver

Update-instructie voor meerdere ID's

Dit komt omdat u probeert column3 . in te stellen naar een geretourneerd resultaat, en SQL verwacht dat dit slechts één waarde is (scalair). De SQL-engine raakt in de war wanneer u meer dan één retourwaarde doorgeeft (welke moet hij gebruiken?... hij gaat er niet van uit dat hij door de resultaten moet bladeren). Dus als u een volledige resultatenset wilt bijwerken, moet u een subtabel van uw query maken en daaraan meedoen. Uw zoekopdracht zou er meer zo uit moeten zien

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)

In de veronderstelling dat table3.id overeenkomt met de andere id's, heb je ook echt niet de inner where table2.id IN ... nodig



  1. python 5x langzamer dan perl mySql-query

  2. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:communicatiekoppeling mislukt naar externe database

  3. Wat zijn de grootste voordelen van het gebruik van INDEXES in mysql?

  4. Wat is er mis met deze UPDATE-query?