Php 使用特定数据更新查询
我有两个表:Php 使用特定数据更新查询,php,mysql,Php,Mysql,我有两个表:sales和productlist。假设它的表有这些ff值 这是sales id | pcode | qty_sold | 1 | 123 | 20 | 2 | 123 | 20 | 这是productlist id | pcode | pleft | 6 | 123 | 20 | 7 | 333 | 40 | 我的问题是:当我从productlist更新1个产品时,它会使用我要更新的产品正确更新,但其他产品数
sales
和productlist
。假设它的表有这些ff值
这是sales
id | pcode | qty_sold |
1 | 123 | 20 |
2 | 123 | 20 |
这是productlist
id | pcode | pleft |
6 | 123 | 20 |
7 | 333 | 40 |
我的问题是:当我从productlist
更新1个产品时,它会使用我要更新的产品正确更新,但其他产品数据会变为0。更新产品列表时的预期值必须如下所示:
id | pcode | pleft |
6 | 123 | 60 |
7 | 333 | 40 |
id | pcode | pleft |
6 | 123 | 60 |
7 | 333 | 0 |
到目前为止,我有以下代码:
mysql_query("UPDATE productlist SET pleft=pleft+(SELECT SUM(qty_sold) ".
"FROM sales WHERE sales.pcode=productlist.pcode)");
但它显示如下:
id | pcode | pleft |
6 | 123 | 60 |
7 | 333 | 40 |
id | pcode | pleft |
6 | 123 | 60 |
7 | 333 | 0 |
我猜您在UPDATE
语句中遗漏了WHERE
子句,例如:
UPDATE productlist
SET pleft=pleft+(SELECT SUM(qty_sold) FROM sales WHERE sales.pcode=productlist.pcode)
WHERE productlist.pcode = "your_id";
您只使用WHERE
进行内部查询
您必须使用WHERE
进行外部查询以更新特定记录
UPDATE productlist
SET pleft=pleft+(SELECT SUM(qty_sold) FROM sales WHERE sales.pcode=productlist.pcode)
WHERE productlist.pcode = "id";
获取“0”的原因是,select为第一个ID返回“40”,但为第二个ID未返回任何行。因此它被认为是空的。这就是第二个id的“0”。请尝试使用l ifnull(选择,0)函数
UPDATE productlist SET pleft=pleft+ifnull((SELECT SUM(qty_sold)
FROM sales WHERE sales.pcode=productlist.pcode),0)
这根本不清楚你想要实现什么。