sql >> Database teknologi >  >> RDS >> Sqlserver

Opdater erklæring for flere id'er

Dette er fordi du forsøger at indstille column3 til et returneret resultat, og SQL forventer, at det kun er én værdi (skalær). SQL-motoren bliver forvirret, når du sender den mere end én returværdi (hvilken en skal den bruge?...den antager ikke at gentage resultaterne). Så hvis du vil opdatere et helt resultatsæt, skal du oprette en undertabel fra din forespørgsel og deltage i det. Din forespørgsel burde se mere sådan ud

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 denne antagelse, at table3.id matcher de andre id'er, har du heller ikke brug for den indre where table2.id IN ...



  1. Problem med MySQL Escape Character

  2. SQL Server til MySQL dataoverførsel

  3. Sådan udtrykkes en serialiserbar Blob-type i en dvaletilknytningsfil

  4. Hvad er @@MAX_PRECISION i SQL Server?