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条经验 获得超22个赞
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 关注
- 728 浏览
添加回答
举报
0/150
提交
取消
