多表更新

在多表 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 表中的数量将增加。