mysql count 与 distinct 混合使用结果不同

SQL COUNT() 函数 4 种用法深度对比:含 NULL 记录数差异超 30% 本文深入解析SQL COUNT()函数的4种常见用法,包括COUNT(*)、COUNT(1)、COUNT(列名)和COUNT(DISTINCT 列名),详细对比它们在包含NULL值和重复记录时的行为差异及性能影响。通过实战案例和性能测试,帮助开发者避免常见陷阱,优化查询效率,特别适合数据分析师和数据库开发人员参考。 阅读详情

时间:2019-05-06 13:52:34

select * from errorinfo;
select count(1) from errorinfo;
select distinct info from errorinfo;
select count(distinct info) from errorinfo;

图片.png

distinct 会将所有NULL合并为一项

count(distinct)会将NULL除去。

select count(distinct info), info from errorinfo group by info

图片.png

null不参与count运算,同样适用于sum, avg。

distinct时,所有null作为一个值。

还可以这么用

SELECT  *,count( DISTINCT COALESCE(user_id,'NULL')) as  visit_count  FROM t

高基数数据处理实战:从COUNT(DISTINCT)失效到精准可控的工程方案 高基数(High Cardinality)指数据中唯一值数量极高的状态,常见于用户ID、设备指纹、搜索词等字段。其本质是数据分布的稀疏性与唯一性爆发,导致传统精确计数(如COUNT(DISTINCT))面临O(N)内存开销、分布式Shuffle瓶颈和严重数据倾斜。技术价值在于通过近似算法(如HyperLogLog、MinHash)、预聚合(RoaringBitmap)、分治采样与混合存储等手段,在精度、性能与成本间实现可验证的平衡。典型应用场景包括实时UV统计、用户行为去重、广告归因与长尾指标分析。本文聚焦 阅读详情

相关推荐

【MySQL进阶·聚合与分组】10.1 计数:从COUNT(*)到性能调优的实战指南

本文深入探讨MySQL中的计数操作,从COUNT(*)与COUNT(列名)的本质区别到大数据量下的性能优化技巧。通过实战案例分享索引使用、条件计数、分组计数等高级模式,帮助开发者提升查询效率。特别针对千万级数据表的计数优化方案,结合Redis和预计算策略,实现毫秒级响应。

weixin_33725239的博客 216

DISTINCT和COUNT的组合使用

最新项目中需要查询分组过滤并统计审批单子数量,需要用到DISTINCT和COUNT函数,特此记录如下: 1:单独使用DISTINCT过滤分组 SELECT DISTINCT(b.short_name) AS short_name, b.WFCODE FROM SUMMARY_DOCUMENT_AUDIT a LEFT JOIN FORMFUNCTION b ON upper(a.WFCODE) = upper(b.WFCODE) WHERE SOURCE =

jike11231的博客 1万+

从MySQL到StarRocks:一次完整的数据库迁移与混合部署实践记录

本文详细记录了从MySQL迁移到StarRocks的完整实践过程,包括混合架构设计、环境准备、集群部署、数据同步与查询分流方案。通过实际案例展示了如何在不影响MySQL事务处理的前提下,利用StarRocks的列式存储和MPP架构显著提升分析查询性能,适用于千万级数据量的电商平台等场景。

weixin_30932215的博客 427

count()和distinct关键字的使用

distinct关键字 distinct关键字是用于去除重复的数据记录。distinct使用情况: (1)select distinct * 情况 当distinct和*号结合使用时候,只有当所有字段都一模一样时候,才会去除重复记录,只保留一条。 (2)select distinct 列名1,列名2,...,列名n 情况 当指定列名后,只有指定的列名字段全部值全部相同时候,才会去除重复的记录,只保留一条。 注意:distinct关键字只能放在所有字段前面,不能在某个字段之后。 count(

✅ Java 开发工程师 4万+

解决mysql报错this is incompatible with DISTINCT

这个错误通常发生在使用DISTINCT关键字时与某些 SQL 操作不兼容的情况下。

cmmav33990的博客 578

从零构建XVC协议栈:FPGA+W5300的跨界调试架构实战

本文详细介绍了如何从零构建XVC协议栈,通过FPGA与W5300以太网控制器的创新组合实现跨界调试架构。重点解析了JTAG时序逆向、TCP/IP协议栈集成与XVC协议实现,提供了硬件设计优化和性能加速技术,为嵌入式开发者和FPGA工程师提供实用的远程调试解决方案。

raspberrypi5的博客 247

SQL中distinct去重关键字的使用和count统计组合的使用

distinct必须在列的前面,否则直接提示错误,当distinct作用于单列的的情况下,统计查询的结果为行数目的总数,包含null为空的数目。count(distinct 列名):根据指定的列统计记录总数,不包含重复的记录,不包括NULL或空的值。select distinct 列名1,列名2,列名3…select distinct 列名 from 表;也可以使用count(2)、count(3)等等。count(distinct 列名)

睡不醒的每天 5693

IOPaint模型部署教程

IOPaint是一款功能全面且强大的AI图像处理工具,它不仅免费开源,还由SOTA(State-of-the-Art,即最先进)AI模型驱动,为图像编辑和修复带来了前所未有的便利和高效。以下是对IOPaint的详细介绍:

SJJS_1的博客 1540

count和distinct配合使用

count和distinct配合使用,count(distinct ColA, ColB)

weixin_46963336的博客 1808

ubuntu22.04 安装部署 openclaw

ubuntu22.04 安装部署 openclaw

nalanxiaoxiao2011的博客 966

OpenRA引擎实战:如何从零开始搭建一个经典RTS游戏模组(附资源包)

本文详细介绍了如何利用开源游戏引擎OpenRA从零开始搭建经典RTS游戏模组。内容涵盖开发环境配置、资源管线处理、YAML规则定义、地图编辑与Lua脚本编写等全流程实战指南,并提供了资源包,帮助开发者和爱好者快速创建属于自己的即时战略游戏世界。

silver的专栏 902

mysql中使用select distinct,select count(*)查询出来的条数不一致解决

今天做了一个需求,然后自测的时候发现实际条数与count条数不一致,count条数明显要多,然后查了一下自己写的sql,明显查询数据的sql与count数据的sql一样为啥不一致呢,原因是distinct过滤叼重复条数,而count不会的,如下这种写法错误,虽然看起来没问题 SELECT DISTINCT COUNT(*) FROM USER a LEFT JOIN user_action_statistics b ON a.row_id = b.quantum_user_id LEFT JOIN (

次去留年 7378

C/C++基础讲解(四十三)之图形篇之绘制直线、圆、圆弧、 椭圆

程序主要是基于Visual studio 2019进行编译完成了,有兴趣的小伙伴可以自己安装下Visual studio 2019,网上有现成的教程,当然了,如果有问题,也可以和我联系,这里我们主要讲解些源码实例,不多说了,言归正传。 C语言,做为学习其他语言的基础语言,其重要性就不言而喻了.下面我将和大家一起来学习探讨C语言的相关奥秘。 实例1:绘制直线 实例2:绘制圆 实例2:绘制圆弧 实例2:绘制椭圆

hnjzfwy的博客 1234

mysql count 与 distinct 混合使用结果不同

distinct 会将所有NULL合并为一项 count(distinct)会将NULL除去。

原谅我一生不羁的博客 1万+

立体仓库WCS控制系统-AGV通信代码

string str = "任务下发,WCS->NT8000(q-Message),ikey:" + p.ikey.ToString() + "fromStation:" + p.fromStation.ToString() + "toStation:" + p.toStation.ToString();if (nt8000.Connect(_ServerAddr, _ServerPort)) QueueSpeech.AddQueue(string.Format("与NT8000重连成功"));

xdpcxq的专栏 2201

linux内核协议栈 TCP选项之SACK选项概述

目录 1SACK概述 1.1 SACK允许选项 1.2 SACK选项 2SACK允许选项的发送 2.1 SYN段发送 2.2 接收SYN段 2.2.1 struct tcp_options_received 2.2.2 tcp_parse_options() 2.3 发送SYN+ACK段 3D-SACK 1SACK概述 标准的TCP确认机制中,如果发送方发送了0-1000序号之间的数据,接收方收到了0-100、300-1000,那么接收方只能向发送方确认101,这时发送方会重...

2731

MySQL中,distinct()和count(*)混合使用问题

统计大量非重复数据时,distinct和count混合使用。 SQL语句: SELECT count( DISTINCT member_id ) FROM pt_member_enter WHERE ( ( 》>add_time BETWEEN '".$date."' AND '".time()."' ) ) AND ( enter_num >= '1' ); 在PHP中结合框架使...

SherlockHolmes_的博客 4465

软考「系统规划与管理师(第2版)」抱佛脚|案例分析预测

规划类(系统/数据/云)+ 服务过程找错改进 + 风险应急终止三大块各备一套成熟模板,术语统一按第2版新教材口径,案例分析 45 分线的希望就大很多。

软件行业技术文化交流。 71

SQL语句5——统计用函数(MySQL)

SQL语句

qq_44527508的博客 3151

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MYSQL 数据去重的两种方式以及实现

你的偏差:以为GROUP BY是 “把原始行按组归类后,依然显示所有行”(行级展示);GROUP BY是 “把每组的多行压缩成 1 行,显示组的标识 / 聚合结果”(组级展示);最终效果:只查分组字段时,每组只显示 1 个标识(因标识相同),所以结果是唯一值,和DISTINCT一致。如果想实现 “显示所有PHONE_ID(含重复)+ 标注组别”,需要用其他方式(比如窗口函数),而不是GROUP BY—— 比如:sqlSELECTPHONE_ID,-- 为每个PHONE_ID分配组别编号。

2201_75756678的博客 739

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mysql 使用总结_MySQL使用总结

索引建立索引索引的基数相对于数据表行数较高,工作效果最好。说明列中不同值较多,区分度的公式是 COUNT(DISTINCT col) / COUNT(*)。查询优化器发现某个值出现在表的数据行中的百分比很高的时候,它一般会忽略索引,进行全表扫描,惯用的百分比界线是“30%”,索引失效对索引列运算,运算包括(+、-、*、/、!、<>、%、like’%_’(%放在前面);类型错误,如字段类...

weixin_30877741的博客 218

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【MySQL从0讲解系列】彻底搞懂 HAVING:和 WHERE 有什么区别?

Q1:HAVING 和 WHERE 的区别?WHERE是过滤原始数据,不能用聚合函数;HAVING是过滤分组之后的结果,常用于配合聚合函数。Q2:可以只用 HAVING 而不用 GROUP BY 吗?A:这和WHERE类似,但不推荐这么写,一般 HAVING 是和 GROUP BY 配套使用的。Q3:能用 HAVING 替代 WHERE 吗?A:不建议。虽然在某些情况下可以实现相同结果,但它们的执行阶段不同,用错会导致性能或结果出错。场景应使用关键字原始数据的条件过滤WHERE。

Mylvzi的博客 702

MySQL之DQL(数据查询语言)-常见关键字

一、简介 二、SELECT 三、FROM 四、WHERE 五、COUNT 六、LIMIT 七、LIKE 八、IN 和NOT IN 九、BETWEEN AND 十、GROUP BY 十一、HAVING 十二、ORDER BY 十三、DISTINCT

嘉禾嘉宁papa 7563

浅析优化MySQL特定类型的查询

浅析优化MySQL特定类型的查询

pleasenoerror的博客 283

sql select distinct常见错误_这8种常见的SQL错误用法,80%的人还在使用

来源:https://dwz.cn/cgAPOWPx1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。SELECT * FROM operation WHERE type = 'SQLStats' A...

weixin_39817176的博客 709

mySQL MAX与sum 连用_mysql踩坑之limit与sum函数混合使用问题详解

前言今天同事在同步完订单数据后,由于订单总金额和数据源的总金额存在差异,选择使用LIMIT和SUM()函数计算当前分页的总金额来和对方比较特定订单的总金额,却发现计算出来的金额并不是分页的订单总金额,而是所有订单的总金额。数据库版本为mysql 5.7,下面会用一个示例复盘遇到的问题。问题复盘本次复盘会用一个很简单的订单表作为示例。数据准备订单表建表语句如下(这里偷懒了,使用了自增ID,实际开发中...

weixin_36058685的博客 613
上一篇: Union和Union All到底有什么区别
下一篇: 通过变量巧实现排名处理
springdk2009
博客等级 码龄17年 1835粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值