count(*)与count(column-name)这两个示例相比,这样做是否有所不同?我倾向于总是写,count(*)因为如果可行,它似乎更适合我的想法,因为它是一个聚合函数。但是我不确定这在技术上是否最好,因为我倾向于看到示例代码编写时*经常没有。计数(*):select customerid, count(*), sum(price) from items_orderedgroup by customeridhaving count(*) > 1;vs. count(列名):SELECT customerid, count(customerid), sum(price)FROM items_orderedGROUP BY customeridHAVING count(customerid) > 1;
3 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
COUNT(*)
计算所有行COUNT(column)
仅计算非NULLCOUNT(1)
等同于COUNT(*)
因为1是非空表达式
您在使用COUNT(*)
或COUNT(column)
应根据所需的输出只。
冉冉说
TA贡献1877条经验 获得超1个赞
这适用于MySQL。我不确定其他人。
区别在于:
COUNT(*)
将计算记录数。COUNT(column_name)
将计算column_name不为null的记录数。
因此,这COUNT(*)
是您应该使用的。如果您使用的是MyISAM,并且没有WHERE
子句,那么优化器甚至不必查看表,因为已经缓存了行数。
湖上湖
TA贡献2003条经验 获得超2个赞
当它是一个标识符(并保证为非标识符NULL
)时,这可能并不重要。
但是,有是之间的差异COUNT(*)
,并COUNT(column)
在一般情况下,这COUNT(column)
将返回非计数NULL
列中的值。还有一种COUNT(DISTINCT column)
变体,可返回唯一的非NULL
值的数量。
- 3 回答
- 0 关注
- 677 浏览
添加回答
举报
0/150
提交
取消