更新时转为空值

时间:2013-10-09 19:07:30

标签: php mysql

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

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

2 个答案:

答案 0 :(得分:0)

您想使用带有第一个非空值的COALESCE

SELECT SUM(COALESCE(qty, 0)) ...

答案 1 :(得分: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)");