首先,这不是在询问 In SQL, what's the difference between count(column) and count(*)? .
假设我有一个 users
表,其中有一个主键 user_id
和另一个字段 logged_in
,它描述了用户现在是否登录。
运行有区别吗
SELECT COUNT(user_id) FROM users WHERE logged_in=1
和
SELECT COUNT(logged_in) FROM 用户 WHERE logged_in=1
查看有多少用户被标记为已登录?也许与索引不同?
如果有特定于数据库的细微差别,我正在运行 MySQL。
最佳答案
在 MySQL 中,count 函数不会对 null 表达式进行计数,因此您的两次查询的结果可能不同。正如评论和 Remus 的回答中提到的,这是 SQL 的一般规则,也是 spec 的一部分。 .
例如,考虑以下数据:
user_id logged_in
1 1
null 1
此表上的 SELECT COUNT(user_id)
将返回 1,但 SELECT COUNT(logged_in)
将返回 2。
作为一个实际问题,问题中示例的结果应该始终相同,只要表构造正确,但使用的索引和查询计划可能不同,即使结果相同.此外,如果这是一个简化的示例,则对不同列的计数也可能会改变结果。
另见这个问题:MySQL COUNT() and nulls
关于mysql - SQL COUNT() 在哪个列上运行有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14388189/