使用连接跟随sql:
SELECT sum(r) AS amount
FROM rep.stats
JOIN rep.valdata
ON rep.valdata.id = rep.stats.data_id
WHERE rep.valdata.custid = 3657 AND
rep.stats.sdatetime LIKE '2014-09-29%'
问题,我的ResultSet给了我一行作为结果,值为0虽然没有数据可用。我希望没有resultSet。怎么了?是吗,因为sum(r)默认返回0?
这会给我带来麻烦,因为0值也是一个值,并会显示出来。
答案 0 :(得分:1)
您的查询是一个没有GROUP BY
的聚合查询。它是一个聚合查询,因为您在SUM()
子句中有一个聚合函数(select
)。
没有group by
的聚合查询将所有行视为组 - 并且所有意味着所有,包括 none 。因此,这样的查询总是只返回一行,它汇总了所有行。
也就是说,查询不应该返回值0
。它应该返回一行,其值为NULL
。
如果您不想要任何行,请添加group by
:
SELECT sum(r) AS amount
FROM rep.stats s JOIN
rep.valdata v
ON v.id = s.data_id
WHERE v.custid = 3657 AND
s.sdatetime >= '2014-09-29' AND
s.sdatetime < '2015-09-30'
GROUP BY v.custid;
注意:
GROUP BY
。这将为每个组返回一行,如果没有组,则不会返回任何行。LIKE
与日期/时间值一起使用。这需要将日期/时间转换为字符串,这可能取决于国际化设置。另外,它可以防止使用索引。