2014-05-03 178 views
0

我有一个奇怪的问题与MySQL sum()结果。奇怪SUM()结果

SELECT `users_limits`.times, SUM(l.times) AS `result` 
    FROM `users_limits` 
     INNER JOIN `users_limits` AS `l` 
     INNER JOIN `vacation_types` AS `v` ON l.id_vacation_type = v.id_vacation_type 
    WHERE l.year =2014 AND v.type =0 

该查询给我的结果是: 次= 10; 结果= 30;

但是也应该给我结果10太多,因为我只有一个记录在我的分贝,与这些条件。

+1

你会介意分享你的表和数据http://sqlfiddle.com –

+0

什么是加盟点'users_limits'本身,没有连接条件?你期望从一个没有'GROUP BY'的聚合函数查询中得到什么? – dasblinkenlight

+0

看起来你在查询中缺少GROUP BY' – Uriil

回答

0

您需要GROUP BY。尝试添加此

GROUP BY l.times 

WHERE l.year =2014 AND v.type =0 
    GROUP BY l.times 

编辑 - :

SELECT `users_limits`.times, SUM(l.times) AS `result` 
    FROM `users_limits` l 
    INNER JOIN `vacation_types` AS `v` ON l.id_vacation_type = v.id_vacation_type 
    WHERE l.year =2014 AND v.type =0 
    GROUP BY l.times 
+0

Count gimme result = 1;我想统计时间栏的内容。 –

+0

我猜那不是这种情况,因为OP说只有一条记录,但通过使用连接OP得到的是跨产品,所以结果是3倍,因为他预期 –

+0

也许你是对的。计数返回我3,它删除连接时效果很好。为什么?我该如何修复它? –