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

SQL Server-opdatering med Inner Join

Mit gæt er, at fordi du har vist os et forenklet skema, mangler der nogle oplysninger, der kan afgøre, hvorfor vi har de gentagne VarietyID-værdier for et givet OrderID.

Når du har flere rækker, vil SQL Server vilkårligt vælge en af ​​dem til opdateringen.

Hvis dette er tilfældet, skal du først gruppere

UPDATE V
SET
   Stock = Stock - foo.SumQuantity
FROM
    tblVariety V
    JOIN
    (SELECT SUM(Quantity) AS SumQuantity, VarietyID
     FROM tblOrderItem
      JOIN tblOrder ON tblOrderItem.OrderId = tblOrder.OrderId  
     WHERE tblOrder.OrderId = 1
     GROUP BY VarietyID
    ) foo ON V.VarietyId = foo.VarietyId  

Hvis ikke, så er OrderItems-tabellen PK forkert, fordi den tillader duplikerede OrderID/VarietyID-kombinationer (PK'en skal være OrderID/VarietyID, eller disse skal begrænses unikke)



  1. Hvordan vil du gemme en virksomheds timer i db/modellen af ​​en Rails-app?

  2. Genvejstast til at ændre lagret procedure i ssms

  3. PhpStorm MySql dobbelte anførselstegn bogstaveligt fortolket som kolonnenavn

  4. Spejling vs replikering