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)

这根本不清楚你想要实现什么。