mysql - 使用另一个表更新一个表

标签 mysql sql

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 中,并且还应该更新表的 TotalQuantity 字段 产品。此查询有什么问题?

我收到错误消息:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM Products AS P ,Products_Sold as S WHERE P.ProductName = S.ProductName' at line 1

有人可以帮我解决这个问题吗?

最佳答案

我已经解决了你的问题。只要按照我做的做就可以了..

我创建了两个表

 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,products_purchased为b集a.total_quantity=

案例

当 a.date_of_lastupdate 时

然后(select * from (select sum(products.total_quantity)+sum(products_purchased.quantity) from products natural join products_purchased)as c)

其他 a.total_quantity

结束

其中a.产品名称=b.产品名称;

关于mysql - 使用另一个表更新一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210030/

相关文章:

mysql - 当另一列中仅存在该值的多个数据时,如何从列中提取数据?

mysql - 在 SQL 中给出当前经纬度时如何获得 5 公里距离的环境

mysql - 仅将特定行从一个表复制到另一个表,并为每行信息创建一个新行

php - 如何创建一个新列包含 id 列的散列

java - 通过Java在MySQL中插入文件文件路径

mysql - 如何使用 MySQL 的 WHERE 部分选择子查询?

mysql - 错误: SQLSTATE[42S22]: Column not found: 1054

mysql - 在mysql命令行中检查当前用户

SQL:如何在 sql 查询中保存顺序?

sql - 按总行数排序