信息发布→ 登录 注册 退出

SQL 查询中 COUNT DISTINCT 怎么用?

发布时间:2025-10-14

点击量:
COUNT(DISTINCT 列名) 用于统计指定列中非空不重复值的数量,NULL 值不计入,常用于去重计数,如统计唯一用户数;支持单列和多字段组合去重(需拼接或特定语法);与 COUNT(*)(统计所有行)、COUNT(列)(统计非空行)不同,其性能在大数据量时较低,建议通过索引和 WHERE 条件优化。

sql 查询中 count distinct 怎么用?

COUNT(DISTINCT) 是 SQL 中用来统计某个字段中不重复值数量的聚合函数。它常用于去重计数,比如统计用户、类别、地区等唯一值的个数。

基本语法

COUNT(DISTINCT 列名) 会返回指定列中不同非空值的数量。

注意:NULL 值不会被计入结果。

例如,有一张订单表 orders,包含字段:order_id, customer_id, product

想统计有多少个不同的客户下过单: SELECT COUNT(DISTINCT customer_id) AS unique_customers
FROM orders;

多个字段去重计数

如果要统计多个字段组合下的唯一记录数,也可以使用 COUNT(DISTINCT) 配合拼接(视数据库支持情况)。

比如统计不同“客户-产品”组合的数量: -- 在支持 CONCAT 的数据库中(如 MySQL)
SELECT COUNT(DISTINCT CONCAT(customer_id, '-', product)) AS unique_combinations
FROM orders;

注意:不是所有数据库都支持在 DISTINCT 中直接用多个字段,但可以用其他方式实现,比如子查询或 GROUP BY。

风车Ai翻译 风车Ai翻译

跨境电商必备AI翻译工具

风车Ai翻译 407 查看详情 风车Ai翻译

与 COUNT(*) 和 COUNT(列) 的区别

  • COUNT(*):统计所有行数,包括 NULL 值所在行
  • COUNT(列):统计该列非 NULL 的行数
  • COUNT(DISTINCT 列):统计该列中非 NULL 的不同值数量

举个例子:

name
Alice
Bob
Alice
NULL

SELECT
COUNT(*) AS total_rows,
COUNT(name) AS non_null_names,
COUNT(DISTINCT name) AS unique_names
FROM table;

结果是:

  • total_rows: 4
  • non_null_names: 3
  • unique_names: 2

性能注意事项

COUNT(DISTINCT) 在大数据量时可能较慢,因为它需要排序或哈希去重。

建议:
  • 确保相关字段有索引,虽然索引对 COUNT(DISTINCT) 效果有限,但有助于过滤数据
  • 尽量先通过 WHERE 减少数据集
  • 某些场景可用近似函数替代,如 HyperLogLog(如 Presto 中的 APPROX_DISTINCT)

基本上就这些。用法不复杂,但要注意 NULL 值和性能影响。

以上就是SQL 查询中 COUNT DISTINCT 怎么用?的详细内容,更多请关注其它相关文章!


相关文章: 如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单  J*aScript中管理异步API调用:确保操作顺序与数据一致性  php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  优化HTML表单样式:解决输入框焦点跳动与元素间距问题  React Router v6 教程:构建认证保护的私有路由与重定向策略  蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址  解决Python单元测试中Mock异常方法调用计数为零的问题  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  Lar*el 8 多关键词数据库搜索优化实践  GemBox Document HTML转PDF垂直文本渲染问题及解决方案  c++ 获取系统当前时间 c++时间戳获取方法  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析  蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版  React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性  外媒分析《GTA6》定价:卖100美元可以但真没必要!  单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分  深入理解J*a合成构造器:何时以及为何阻止其生成  在哪找SublimeJ远程工具_SFTP插件配置教程  解决J*aScript中重复选择项的确认对话框显示问题  Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法  文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】  高德地图怎么看全景照片_高德地图全景照片浏览教程  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  J*aScript:在map操作中高效处理空数组  汽水音乐在线解析 汽水音乐在线解析入口  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  优化Lar*el Docker镜像:Composer与PHP版本控制策略  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  css绝对定位元素脱离父容器怎么办_确保父元素position非static  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问  Python实现多节点属性重叠度分析教程  谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版  CSS布局中意外空白:解决padding-top导致的顶部间距问题  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  Tabulator表格日期时间排序问题及自定义解决方案  XML中包含HTML标签导致解析错误? 正确嵌入非XML数据的两种方法  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正  怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】  CSS实现侧边栏导航项全宽圆角悬停背景效果  Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑  微信语音通话掉线如何解决 微信语音通话稳定优化方法  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  顺丰快件物流信息 官方网站查询入口 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!