MySQL COUNT() 和重复项

标签 mysql count

我有这个查询:

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'));

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

这些是表格:

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

有了这个完整性约束:

Contract(playerCode)-->Player(code)  
Contract(teamName)-->Team(name)  

该查询提取纽约市与名为 X,Y 的球员签订契约(Contract)的球队数量。 谢谢。

最佳答案

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

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

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

关于MySQL COUNT() 和重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38726893/

相关文章:

mysql - 我如何编写这种查询(为每一行返回最新的可用数据)

sql - 正则表达式匹配除特定给定字符串之外的任何内容(包括空字符串)

r - 创建一个按组捕获最频繁出现的变量

mysql - 根据连接表中的计数从一个表中排除记录

php - 如何使用 PHP 和 MySql 在条件检查中使用 SELECT 和 WHERE & AND

mysql - 如何在 ssh 进入亚马逊实例后在 Jmeter 中运行 Mysql 查询

c# - 如何清除存档记录表中的重复条目

一个查询中的mysql multi count()

mysql - cakephp3 从其他模型中选择 count(*)

php - 从两个表中选择并计算查询