select *
from Table1 t1
inner join Table2 t2 on t1.id=t2.tid
返回102行
select sum(t1.val), count(t1.val)
from Table1 t1
inner join Table2 t2 on t1.id=t2.tid
返回29000 103
这意味着第二个查询无法正常工作。有什么问题?
答案 0 :(得分:0)
看起来你的103个值之一在val列中为null。
select sum(t1.val), count(*)
from Table1 t1
inner join Table2 t2 on t1.id=t2.tid
这应该返回103计数。至少在MS SQL Server中。但我认为它是SQL ANSI的一部分,所以应该适用于所有符合SQL ANSI的数据库引擎
答案 1 :(得分:0)
由于您没有指定DBMS,因此您在标记时只会根据SQL
进行回答。无论如何,这应该适用于任何DBMS。
您有两个具有相同联接的不同查询。在两种情况下,连接都将生成相同数量的结果。从第一个中可以清楚地看出,在加入之后有102个结果。
如果您想要计算这些行,则无法获得比实际行更多的行。可能发生的情况是您得到的更少,因为count(field)
聚合函数将仅计算field
的非空值。
然而,你说你得到了更多,这是绝对不可能的。