选择计数(*)和选择计数(字段名)之间的区别[重复]

Posted

技术标签:

【中文标题】选择计数(*)和选择计数(字段名)之间的区别[重复]【英文标题】:difference between select count(*) and select count(fieldName) [duplicate] 【发布时间】:2012-03-21 09:45:40 【问题描述】:

可能重复:In SQL, what's the difference between count(column) and count(*)?

根据主题,mysql 解释上述查询的方式有什么不同吗?还是认为它们是一样的?

【问题讨论】:

你试过了吗?它们通常不会给出相同的结果,那么您为什么认为它们可能被认为是相同的? 抱歉标题错误>. 阅读这个(几乎相同的问题:What is the difference between select count(*) and select count(any_non_null_column)? 这个问题已经被问了数百万次了。 它们应该是一样的。最好不要使用select *。我遇到的最常见的问题是如果你想排除一列会发生什么?见here。 【参考方案1】:

函数COUNT(*)COUNT(fieldname)的区别在于第二个函数不计算NULL值。

【讨论】:

【参考方案2】:

SELECT *... 返回选定表中的所有字段。 SELECT fieldname 只返回指定的字段名。

使用第二个选项效率更高,特别是在表有很多字段并且其中一些没有索引的情况下。从这些中选择将花费更长的时间,如果您不需要,则选择全部没有意义。

【讨论】:

这不是问题所在。问题是关于count(*) vs count(fieldName) 现在不是这个问题了,是我回答的时候,他改了标题 @MartinSmith:这就是问题所在。在 OP 编辑​​之前。 啊,后来看到问题了。对不起!【参考方案3】:

select(*) 表示您要选择表中所有可用的字段。而 select(fieldname) 表示您只想选择表格中的某些列。

例如,您有一个表“用户”,其中包含“用户名”、“电子邮件”、“密码”列;您可以执行以下操作:

select (*) from Users

这将为您提供所有 3 列(用户名、电子邮件、密码);或者你可以这样做:

select username, email from Users

这只会为您提供 2 列(用户名、电子邮件)。

【讨论】:

以上是关于选择计数(*)和选择计数(字段名)之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP Mysqli - 结果为0时选择*或选择计数(*)?

在 django 映射中如何获得完整的选择字段计数

选择计数的 PreparedStatement [重复]

从另一个表中选择具有数据计数的数据[重复]

如何使用PHP [重复]显示提交的单选按钮值的计数

mysql选择当前位置的计数器[重复]