即使数据库中没有存储值或数据,如何选择和设置值为0

时间:2013-09-10 06:11:45

标签: mysql

是否有任何选择查询将值设置为0,即使它是空的或没有记录存储在数据库中?

因为我试图从两个不同的表中减去值。但问题是如果其中一个表没有存储数据,我就不能减去表。

这是我的代码。如果两个表都有值,则此代码可以减去。

SELECT  category,(SELECT SUM(s.total)-SUM(r.total)
    FROM rsales AS s WHERE r.pcode=s.pcode
) as total, 
r.pcode 

FROM rreturn AS r 

GROUP BY r.pcode;

3 个答案:

答案 0 :(得分:2)

使用IFNULLCOALESCE

SELECT IFNULL(SUM(s.total), 0)

SELECT COALESCE(SUM(s.total), 0)
  

如果expr1不是NULL,则IFNULL()会返回expr1;,否则会返回expr2。   IFNULL()返回数值或字符串值,具体取决于使用它的上下文。

答案 1 :(得分:0)

这样的事情应该起作用

SUM(IF(s.total, s.total, 0))

OR

SUM(IFNULL(s.total), 0))

答案 2 :(得分:0)

您使用的语法既令人困惑又容易出错。我会选择这样简单的事情:

SELECT category, SUM(s.total) - SUM(r.total) total
FROM rsales s
LEFT JOIN rreturn r USING (pcode)
GROUP BY s.pcode;

这假定rreturn可能没有每个pcode的记录。