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

Aktualizace SQL Serveru s Inner Join

Domnívám se, že protože jste nám ukázali zjednodušené schéma, chybí některé informace, které by určovaly, proč mít pro dané OrderID opakované hodnoty VarietyID.

Pokud máte více řádků, SQL Server libovolně vybere jeden z nich pro aktualizaci.

Pokud je to váš případ, musíte se nejprve seskupit

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  

Pokud ne, pak je tabulka OrderItems PK chybná, protože pokud umožňuje duplicitní kombinace OrderID/VarietyID (PK by měla být OrderID/VarietyID, nebo by měly být omezeny jako jedinečné)



  1. Spouštěč MySql pro aktualizaci PostCount

  2. Mohu změnit způsob distribuce na existující tabulce Citus?

  3. Předání názvu sloupce jako parametru v MySQL

  4. InnoDB MYSQL není podporován na webovém serveru