count(*)和count(attribute_name)有什么区别?

COUNT(*)和COUNT(attribute_name)之间是否有区别?

我使用count(attribute_name),因为我认为这很具体,因此搜索过程会更容易。是真的吗?

很高兴看到我的问题带有sql代码的任何示例,以帮助我更好地理解

c139261 回答:count(*)和count(attribute_name)有什么区别?

想象一下这张桌子:

enter image description here


select Count(TelephoneNumber) from Calls -- returns 3
select Count(*) from Calls -- returns 4

count(column_name)也计算重复值。考虑:

enter image description here

select Count(TelephoneNumber) from Calls -- returns 4
,

COUNT(*)对组中的所有记录进行计数。

COUNT(column_name)仅计算非空值。

还有另一个典型的表达式COUNT(DISTINCT column_name),该表达式计算非空的不同值。

自您提出要求以来,这里是 demo on DB Fiddlde

with t as (
    select 1 x from dual
    union all select 1 from dual
    union all select null from dual
)
select count(*),count(x),count(distinct x) from t
COUNT(*) | COUNT(X) | COUNT(DISTINCTX)
-------: | -------: | ---------------:
       3 |        2 |                1
,

@Hashtable Model .. @foreach (var e in Model ) { } 将计算所有行。 COUNT(*)仅计为COUNT(column)

您可以使用non-NULLsCOUNT(*),它们应仅基于所需的输出。

请考虑以下员工表示例

COUNT(column)

从员工那里选择计数(*);

ID        Name      Description
1         Raji      Smart
2         Rahi      Positive
3 
4         Falle     Smart

从员工中选择计数(姓名);

Count(*)
4
,

count()仅计算非空值。 *引用完整的行,因此从不排除任何行。 count(attribute_name)仅计算该列不为空的行。

所以:

select count(attribute_name)
from the_table

等效于:

select count(*)
from the_table
where attribute_name is not null
,

区别很简单: COUNT(*)计算查询产生的行数,而 COUNT(1)计算 1 值。请注意,当在查询中包含数字或字符串之类的文字时,该文字将“附加”或附加到 FROM 子句产生的每一行。

有关更多详细信息,this链接将帮助您理解。

本文链接:https://www.f2er.com/3153875.html

大家都在问