MySQL COUNT()和重复

时间:2016-08-02 17:25:19

标签: mysql count

我有这个问题:

DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);

我不明白为什么count()函数不计算重复项,即使没有distinct子句。

这些是表格:

select count(name) as nr  
from team where city='ny' and name=ANY  
(select teamName from contract where playerCode=ANY  
(select code from player where name='X' and surname='Y'));

有了这种完整性约束:

Player(code, name, surname)  
Contract(id, playerCode, teamName, year)  
Team(name, city)  

该查询提取与名为X,Y的玩家签订合同的纽约市的团队数量。 感谢。

1 个答案:

答案 0 :(得分:1)

您的查询将计算重复项。我的猜测是你期望子查询中的多个匹配重复。但是,子查询不是JOIN,因此不会复制team表的结果,无论子查询中有多少匹配。

team表中的每一行只会评估一次WHERE条件,并且会根据这些条件是否满足而包含(一次)。

假设team.name中没有NULL值,如果SELECT COUNT(name), COUNT(*)这两个字段应具有相同的值。