SQL中的GROUP BY未给出正确的结果

时间:2016-02-02 11:19:05

标签: sql

http://sqlfiddle.com/#!9/62003/3

在上面的小提琴中,有4个不同的subid,查询是subid上的GROUP BY。但是它在GROUP BY之后为所有子项提供0。

请告知为什么它不给10和20作为2个子项的结果?我在查询中做错了什么?请告诉我。

1 个答案:

答案 0 :(得分:3)

当您使用GROUP BY时,您会获得每个组的结果。如果您想跳过它们,请使用HAVING

SELECT SUM(shippingvalue) AS shippingvalue
FROM t_product_purchase 
WHERE mpkid=5 
GROUP BY subid
HAVING shippingvalue <> 0;

SqlFiddleDemo

输出:

╔═══════════════╗
║ shippingvalue ║
╠═══════════════╣
║            10 ║
║            20 ║
╚═══════════════╝

如果您希望在结果集中使用subid

SELECT subid, SUM(shippingvalue) AS shippingvalue
FROM t_product_purchase 
WHERE mpkid=5 
GROUP BY subid
HAVING shippingvalue <> 0

SqlFiddleDemo2