0

我有两张桌子。销售和产品列表。两个表中存在的一些数据是共同的。所以我想做的是我想更新 tbl productlist 中的选定字段,其中 tbl prodctlist 数据存在于 tbl sales 中。我在下面使用了以下查询,但问题是如果产品列表中的数据在销售中不存在,则它变为空。我正在寻找的是,如果 tbl productlist 中的数据在 tbl sales 中不存在,则它不会变为 null,而是在更新之前保持相同的值

mysql_query("UPDATE productlist 
SET pleft=pleft+(SELECT SUM(qty) FROM sales 
WHERE (sales.name = productlist.pdesc) 
AND (sales.name1 = productlist.pdesc1))"); 
4

2 回答 2

0

您想使用COALESCE第一个非空值:

SELECT SUM(COALESCE(qty, 0)) ...
于 2013-10-09T19:09:38.817 回答
0

您可以使用IFNULL函数:

mysql_query("UPDATE productlist SET pleft=pleft + IFNULL( (SELECT SUM(qty) FROM sales WHERE (sales.name = productlist.pdesc) AND (sales.name1 = productlist.pdesc1), 0)"); 

此外,如果 qty 字段可以为 NULL,最好有:

mysql_query("UPDATE productlist SET pleft=pleft + IFNULL( (SELECT SUM(IFNULL(qty,0)) FROM sales WHERE (sales.name = productlist.pdesc) AND (sales.name1 = productlist.pdesc1), 0)"); 
于 2013-10-09T19:45:30.500 回答