sql >> Databáze >  >> RDS >> Sqlserver

Aktualizovat výpis pro více ID

Je to proto, že se pokoušíte nastavit column3 na vrácený výsledek a SQL očekává, že to bude pouze jedna hodnota (skalární). SQL engine je zmatený, když mu předáte více než jednu návratovou hodnotu (kterou by měl použít?... nepředpokládá iteraci výsledků). Pokud tedy chcete aktualizovat celou sadu výsledků, musíte z dotazu vytvořit podtabulku a připojit se k ní. Váš dotaz by měl vypadat spíše takto

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)

Za tohoto předpokladu, že tabulka3.id odpovídá ostatním ID, také opravdu nepotřebujete vnitřní where table2.id IN ...



  1. Jak porovnat datum a čas pouze s datem na serveru SQL Server

  2. Java:Reading Blob od Oracle

  3. mysql - dotaz na tři tabulky

  4. Tabulkové prostory v Oracle