COUNT()
是一个聚合函数,通常与GROUP BY
子句结合使用。
据我所知,只有MysqL允许使用此语法而不使用该GROUP BY
子句。由于您没有提供,COUNT(*)
它将计算表中的总行数,并且该owner
列将被随机选择/优化器默认值/按索引选择。
这应该是您的查询:
select owner, count(*)
from pet
group by owner;
告诉优化器为 所有者计算总行数。
当未提及group by子句时-聚合函数将应用于表的整个数据。
每行将无法正常COUNT()
使用计数,通常无法与分析函数配合使用->COUNT() OVER(PARTITION...)
不幸的是,MysqL中不存在该函数。您的另一个选择是JOIN/CORRELATED QUERY
为此附加列创建一个。
SELECT owner,
(SELECT COUNT(*) FROM pet) as cnt
FROM pet