我有两个表: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.更新productlist
时的预期值必须看起来像这样:
id | pcode | pleft |
6 | 123 | 60 |
7 | 333 | 40 |
到目前为止我有这个代码:
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 | 0 |
答案 0 :(得分:1)
我猜您在WHERE
声明中错过了UPDATE
条款,例如:
UPDATE productlist
SET pleft=pleft+(SELECT SUM(qty_sold) FROM sales WHERE sales.pcode=productlist.pcode)
WHERE productlist.pcode = "your_id";
答案 1 :(得分:1)
您的内部查询仅使用WHERE
。
您必须使用WHERE
进行外部查询以更新特定记录。
UPDATE productlist
SET pleft=pleft+(SELECT SUM(qty_sold) FROM sales WHERE sales.pcode=productlist.pcode)
WHERE productlist.pcode = "id";
答案 2 :(得分:0)
你得到的原因' 0'是,您的选择返回' 40'对于第一个ID但没有返回第二个行。所以它被认为是空的。多数民众赞成你得到的' 0'为第二个id。尝试使用l ifnull(select,0)函数。
UPDATE productlist SET pleft=pleft+ifnull((SELECT SUM(qty_sold)
FROM sales WHERE sales.pcode=productlist.pcode),0)