0

是否有任何将值设置为 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;
4

3 回答 3

2

使用IFNULLCOALESCE

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

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

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

于 2013-09-10T06:17:46.763 回答
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.

于 2013-09-10T06:47:13.003 回答
0

像这样的东西应该工作

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

或者

SUM(IFNULL(s.total), 0))
于 2013-09-10T06:18:13.143 回答