Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Актуализация на SQL Server с вътрешно присъединяване

Предполагам, че тъй като ни показахте опростена схема, липсва някаква информация, която да определи защо има повтарящи се стойности на VarietyID за даден OrderID.

Когато имате няколко реда, SQL Server произволно ще избере един от тях за актуализация.

Ако случаят е такъв, първо трябва да групирате

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  

Ако не, тогава таблицата OrderItems PK е грешна, защото if позволява дублиращи се комбинации OrderID/VarietyID (PK трябва да бъде OrderID/VarietyID или те трябва да бъдат ограничени уникални)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на няколко реда БЕЗ повтаряне на частта INSERT INTO ... от израза?

  2. SQL Server AutoIncrement варира според стойността на друго поле

  3. Каква е целта на репликацията на данни?

  4. Производителността на заявките на Entity Framework се различава екстремно със суровото изпълнение на SQL

  5. SQL Server:комбиниране на няколко реда в един ред