当我们执行select count(*) from table_name时,它返回行数.

count(1)是做什么的?1在这里意味着什么?这与count(*)相同吗(因为它在执行时给出相同的结果)?

推荐答案

COUNT函数的参数是一个要为每行计算的表达式.COUNT函数返回表达式计算为非空值的行数.(*是一个不计算的特殊表达式,它只返回行数.)

表达式还有两个附加修饰符:ALL和DISTINCT.这些参数决定是否丢弃重复项.由于ALL是默认值,因此您的示例与count(ALL 1)相同,这意味着将保留重复项.

由于表达式"1"对每一行的计算结果都是非空的,而且您没有删除重复项,所以COUNT(1)应始终返回与COUNT(*)相同的数字.

Sql相关问答推荐

按CTE创建任务表

如何以"% m—% d"格式对生日列表进行排序,以查找与今天最近的日期?

SQL查询每个客户的最新条目

在多个柱上连接时,如何确定连接条件?

retrofit AWS Athena中的JSON

SQL基于多个值 Select 单行

收到%1、%2或%2邮箱的唯一客户

我可以在SQLite3中使用BLOB作为主键吗?

在迁移到.NET8后,使用Array.Containers的F#查询表达式失败

改进的SQL子字符串提取

更改重复值的情况

SQL Server 查询 WHERE LIKE

JSON_VALUE 不适用于提取的 json 中的嵌套路径

PostgreSQL:从多个字段收集特定指标的最后一个条目

计算组内多个日期间隔go 年的累计天数

我们可以使用连接改进包含多个子查询的查询吗

Athena:从字符串birth_dt列计算年龄

按 15 分钟递增计数分组,包括 0 计数

Postgres 窗口函数未按预期工作

如何在 Trino/Presto 中过滤掉 map 中的某些键?