Update语句未更新数据库中的正确值

时间:2019-03-30 10:42:25

标签: mysql sql

我需要根据这些条件更新UnitinStockShipped Date产品。

  1. Shipped date is null
  2. Quantity < Unit in stock时。

但是我的查询正在更新Shipped date处的订单Shipped date is null,但不满足Quantity < Unit in stock。就像这样,即使Quantity > Unit in stock

,它也会将空值更新为当前日期

我如何满足这两个条件并更新列:

update products,orderdetails,orders
set 
    products.UnitsInStock = (products.UnitsInStock - orderdetails.Quantity), 
    ShippedDate = current_date()
where 
    products.ProductID = orderdetails .ProductID 
    and orders.OrderID = orderdetails.OrderID
    and (ShippedDate is null and orderdetails.Quantity < UnitsInStock) 
    and  orders.OrderID = 11039

1 个答案:

答案 0 :(得分:0)

我认为您的逻辑还可以。我不太了解数据模型-例如,为什么ShippedDate中的products而不是orderdetails中的数据模型。但是,这就是查询所指定的。

我注意到您不需要orders表进行查询。这样就可以简化查询。您还可以使用显式join和表别名,这样更易​​读:

update products p join
       orderdetails od
       on p.ProductID = od.ProductID
    set p.UnitsInStock = (p.UnitsInStock - od.Quantity), 
        p.ShippedDate = current_date()
where p.ShippedDate is null and
      od.Quantity < p.UnitsInStock and
      od.OrderID = 11039;