我有以下疑问:

select column_name, count(column_name)
from table
group by column_name
having count(column_name) > 1;

如果我把所有通话改为count(column_name)count(*),会有什么不同?

这个问题的灵感来自How do I find duplicate values in a table in Oracle?.


为了澄清被接受的答案(可能还有我的问题),将count(column_name)替换为count(*)将在结果中返回一个额外的行,其中包含null和列中null个值的计数.

推荐答案

count(*)计算空值,count(column)不计算空值

[edit]添加了此代码,以便人们可以运行它

create table #bla(id int,id2 int)
insert #bla values(null,null)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,null)

select count(*),count(id),count(id2)
from #bla

后果

Sql相关问答推荐

使用Mac日志(log)时间找出SQL中的好小时和坏小时

R中对Arrow duckdb工作流的SQL查询

PostgreSQL使用SQL子查询在时间间隔内 Select 数据

从字符串中删除";1、";和";2,";,而不删除";11、";和";12、";

在PostgreSQL中汇总连接表中的 case 值

通过对象分离实现原子性

PostgreSQL:查找继承表中的特定记录属于哪个表

最小非重复集的SQL查询

Haystack针相交-在元素最多的Haystack中查找集合

在SQL中转换差异表的多列

如何修复初学者 SQL INNER JOIN 查询错误

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

试图找到两个身份列表的交集(列表的长度不同),但获取列 id 不明确?

按所选的值将记录分组到不同的列中

Postgres数据库维护:基于GROUP BY删除旧记录

如何显示最常引用条目的详细信息

获取 SQL Server 中每一行的两个-之间的文本

如何在 SQL Server 中将 -13422.8450 舍入到 -13422.84

如何找到特定时间间隔内的最大和最小日期?

在sql server中创建唯一标识符列