我需要根据这些条件更新产品的UnitinStock
和Shipped Date
。
当Shipped date is null
和
当Quantity < Unit in stock
时。
但是我的查询正在更新Shipped date
的订单,其中Shipped date is null
e但不满足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
最佳答案
我认为您的逻辑还可以。我不太了解数据模型-例如,为什么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;