[英]Update a table using another table
UPDATE Products
SET TotalQuantity = (CASE WHEN P.DateOfLastUpdate < PurchaseDate
THEN (SUM(P.TotalQuantity) + SUM(M.Quantity))
ELSE P.TotalQuantity END)
FROM Products AS P ,Products_Purchased as M
WHERE P.ProductName = M.ProductName;
我要针对另一个表Products_Purchased更新表Products。 如果我将新项目添加到Products_Purchased,则它也必须输入到表Products中,并且还应该更新表Products中的TotalQuantity字段。 此查询有什么问题?
我收到错误消息:
错误1064(42000):您的SQL语法有错误; 在第1行的“ FROM Products AS P,Products_Sold as S WHERE P.ProductName = S.ProductName”附近,查看与您的MySQL服务器版本相对应的手册,以使用正确的语法。
有人可以帮我解决这个问题吗?
我已经解决了您的问题。请按照我的操作进行。
我创建了两个表
create table products(product_name text,total_quantity int,date_of_lastupdate date);
create table products_purchased(product_name text,quantity int,date_of_purchase date);
insert into products values('food',10,'2013-5-6'),('dress',20,'2012-4-7');
insert into products_purchased('food',15,'2012-2-1'),('dress',12,'2013-6-8');
现在,我尝试使用以下代码在与您尝试的相同的条件下进行更新,并且效果很好。
只需阅读代码,您就会了解我所做的事情,它将解决您的问题。
将产品更新为a,将购买的产品更新为b设置a.total_quantity =
案件
当a.date_of_lastupdate
然后(从*从自然加入产品_购买的产品中选择总和(产品。总数量)+总和(产品_购买的数量)中选择*作为c)
否则a.total_quantity
结束
其中a.productname = b.productname;
认为使用JOIN进行UPDATE FROM将有助于:
UPDATE
Sales_Import
SET
Sales_Import.AccountNumber = RAN.AccountNumber
FROM
Sales_Import SI
INNER JOIN
RetrieveAccountNumber RAN
ON
SI.LeadID = RAN.LeadID
尝试这个
UPDATE Products
SET TotalQuantity =
(SELECT CASE WHEN P.DateOfLastUpdate < PurchaseDate
THEN (SUM(P.TotalQuantity) + SUM(M.Quantity))
ELSE P.TotalQuantity END
FROM Products AS P ,Products_Purchased as M
WHERE P.ProductName = M.ProductName
AND P.ProductName = :p1)
WHERE ProductName = :p1
:p1是一个参数,其中包含要更新的零件的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.