Mysql 使用另一个表更新表

Mysql 使用另一个表更新表,mysql,sql,Mysql,Sql,我想更新与您购买的另一个表产品相关的表产品。如果我将新项目添加到已购买的产品中,它也必须输入到表Products中,并且还应更新表TotalQuantity字段 产品。这个问题出了什么问题 我收到错误消息: 错误1064 42000:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取正确的语法,以便在第1行使用“从产品作为P,产品作为S销售,其中P.ProductName=S.ProductName” 有人能帮我整理一下这个吗?我想通过加入更新会有所帮助: 试试这个 UPD

我想更新与您购买的另一个表产品相关的表产品。如果我将新项目添加到已购买的产品中,它也必须输入到表Products中,并且还应更新表TotalQuantity字段 产品。这个问题出了什么问题

我收到错误消息:

错误1064 42000:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取正确的语法,以便在第1行使用“从产品作为P,产品作为S销售,其中P.ProductName=S.ProductName”

有人能帮我整理一下这个吗?

我想通过加入更新会有所帮助:

试试这个

UPDATE
    Sales_Import
SET
    Sales_Import.AccountNumber = RAN.AccountNumber
FROM
    Sales_Import SI
INNER JOIN
    RetrieveAccountNumber RAN
ON 
    SI.LeadID = RAN.LeadID

:p1是保存要更新的零件名称的参数

我已经解决了你的问题。照我说的做就行了

我创建了两个表

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
现在,我尝试在与您尝试使用以下代码相同的条件下进行更新,它工作得非常好

只要通读一下代码,你就会明白我做了什么,它会解决你的问题

将产品更新为a,将购买的产品设置为b。总数量=

案例

上次更新的日期 然后从select sumproducts中选择*。总数量+购买的sumproducts。产品数量自然加入产品购买数据集c

其他a.总数量

结束


其中a.productname=b.productname

你收到错误信息了吗?这个问题给了你错误的答案吗?目前这里没有足够的信息提供帮助。我收到错误消息:error 1064 42000:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取正确的语法,以便在第行使用“从产品作为P,产品作为S销售,其中P.ProductName=S.ProductName”1@No阿姆纽曼有两张桌子,一张是产品,另一张是购买的产品。如果我在Products\u Purchased中输入新产品条目,则表Products中的信息(如相同产品的总数量)也应更新。表Products中的每个产品条目必须是单个的。它不应在表Products中重复相同的产品名称。在Products\u Purchased表中,不同的产品信息(如dateofpurchased、,可以插入数量。两个观察结果:1数据库设计得不太好-库存应该只记录在一个地方。如果“products_purchased”表包含实际移动日期和销售金额,则“products”表中不应有“totalquantity”字段。2根据SQL标准,“update”语句不能包含联接。您可能必须使用子查询,但case语句使其变得复杂。如前所述,查询将尝试更新“products”表中的每个部分,这可能不是您想要的。谢谢Abhik Dey,我将尝试此项。。正如你提到的,我已经创建了这两个表。我需要的是,如果我通过添加新项目来更新购买的表产品,则必须将其插入表产品中。我不应该直接在产品中插入数据。是的,我了解您的需要,通过我提供的代码,无论何时更新产品表中的任何内容,您都完全能够满足您的需要,products表将通过上述代码自动更新,但它不会将新项目条目添加到products表中,products表仅在products\u Purchased表中可用。此查询不会检查LastUpdate日期和purchasedate条件。甚至不更新TotalQuantity字段。。请你能给我任何解决方案吗..它给出的TotalQuantity为空我不明白应该是什么:在我的查询中p1。。。您能解释一下吗?p1是一个参数,在这种情况下,它将是您要更新的产品编号。如果要在一个查询中更新所有产品,请删除最后两行,但不要忘记右括号!。
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
 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');