我有这个问题:
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的玩家签订合同的纽约市的团队数量。 感谢。
答案 0 :(得分:1)
您的查询将计算重复项。我的猜测是你期望子查询中的多个匹配重复。但是,子查询不是JOIN,因此不会复制team
表的结果,无论子查询中有多少匹配。
team
表中的每一行只会评估一次WHERE
条件,并且会根据这些条件是否满足而包含(一次)。
假设team.name
中没有NULL值,如果SELECT COUNT(name), COUNT(*)
这两个字段应具有相同的值。