Mysql 有可能是:“;选择计数(*)<;选择计数(值)?”;

Mysql 有可能是:“;选择计数(*)<;选择计数(值)?”;,mysql,sql,group-by,Mysql,Sql,Group By,结果值选择计数(*)能否小于值选择计数(值) 为什么?请解释答案。据我所知,您的问题似乎不可能,因为selectcount(*)始终考虑表中的所有行,并且select count(value)应该相同或更少 如果您有一个select count(distinct(*),则可能会少一些,但在您提到的情况下是不可能的。count(*)统计每个记录,而count(value)只考虑非空值。对于给定的数据集,COUNT(*)不能小于COUNT(value),但可以大于此值 考虑以下数据集: val 1

结果值
选择计数(*)
能否小于值
选择计数(值)


为什么?请解释答案。

据我所知,您的问题似乎不可能,因为select
count(*)
始终考虑表中的所有行,并且
select count(value)
应该相同或更少

如果您有一个
select count(distinct(*)
,则可能会少一些,但在您提到的情况下是不可能的。

count(*)
统计每个记录,而
count(value)
只考虑非空值。对于给定的数据集,
COUNT(*)
不能小于
COUNT(value)
,但可以大于此值

考虑以下数据集:

val
1
2
null
我们有3条记录,其中一条值为空。现在,如果我们运行:

select count(*), count(val) from t
我们将得到:

count(*) | count(val) -------: | ---------: 3 | 2 计数(*)|计数(val) -------: | ---------: 3 | 2

否两者都是相同的,您需要像这样使用
选择计数(*),从t中选择计数(val/*/1),其中val不为空)从t
否。
选择计数(*)
统计所有记录的总数<代码>选择计数([值])对记录的子集进行计数。后一个计数只能是较少或相同的。如果您每隔一段时间进行查询,并且同时向表中添加了更多行,则可能会发生这种情况。除此之外,没有。