是否有任何选择查询将值设置为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;
答案 0 :(得分:2)
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
的记录。