选择计数(*)和选择计数(字段名)之间的区别[重复]
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 列(用户名、电子邮件)。
【讨论】:
以上是关于选择计数(*)和选择计数(字段名)之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章