gpt4 book ai didi

mysql - SQL COUNT() 在哪个列上运行有什么区别?

转载 作者:行者123 更新时间:2023-11-29 01:06:13 24 4
gpt4 key购买 nike

首先,这不是在询问 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com