多表更新

在多表 UPDATE 中,它更新滿足條件的每個指定表中的行。即使多次匹配條件,每個匹配行也會更新一次。

在多表 UPDATE 中,不能使用 ORDER BYLIMIT

多表 UPDATE 的語法是,

UPDATE [LOW_PRIORITY] [IGNORE] 
table1, table2, ...
    SET column1 = expression1,
        column2 = expression2,
        ...
    [WHERE conditions]

例如,考慮兩個表,productssalesOrders。如果我們減少了已經放置的銷售訂單中特定產品的數量。然後我們還需要在 products 表的庫存欄中增加該數量。這可以在單個 SQL 更新語句中完成,如下所示。

UPDATE products, salesOrders
  SET salesOrders.Quantity = salesOrders.Quantity - 5, 
      products.availableStock = products.availableStock + 5
WHERE products.productId = salesOrders.productId
  AND salesOrders.orderId = 100 AND salesOrders.productId = 20;

在上面的例子中,數量'5’將從 salesOrders 表減少,並且根據 WHERE 條件,products 表中的數量將增加。