我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中count(distinct col...)组合使用的注意要点详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中count(distinct col...)组合使用的注意要点详解

第一步:数据准备

mysql> select * from my_student;
+----+------------+-----------+--------+--------+
| id | number     | name      | sex    | addr   |
+----+------------+-----------+--------+--------+
|  1 | itcast0001 | Jim       | female | 北京   |
|  2 | itcast0002 | HanMeimei | female | 上海   |
|  3 | itcast0003 | Kate      | female | NULL   |
|  4 | itcast0004 | Tom       | male   | NULL   |
|  5 | itcast0005 | LinTao    | male   | NULL   |
|  6 | itcast0006 | 张越      | 女     | NULL   |
+----+------------+-----------+--------+--------+
6 rows in set (0.00 sec)

第二步:数据验证

1.distinct单字段去重

mysql> select distinct addr from my_student;
+--------+
| addr   |
+--------+
| 北京   |
| 上海   |
| NULL   |
+--------+
3 rows in set (0.00 sec)

2.count和distinct配合使用

1).count(distinct col) 计算该列除 NULL 之外的不重复行数。

    mysql> select count(distinct addr) from my_student;							①
	+----------------------+
	| count(distinct addr) |
	+----------------------+
	|                    2 |
	+----------------------+
	1 row in set (0.00 sec)
	
	-- 把上述SQL改写成 select count(1) from (select distinct col from ...) a; 
	mysql> select count(1) from (select distinct addr from my_student) a;		②
	+----------+
	| count(1) |
	+----------+
	|        3 |
	+----------+
	1 row in set (0.00 sec)

注意比较①和②的结果,是不同的.

2).count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值,也返回为 0。

    mysql> select distinct sex,addr from my_student;
	+--------+--------+
	| sex    | addr   |
	+--------+--------+
	| female | 北京   |
	| female | 上海   |
	| female | NULL   |
	| male   | NULL   |
	| 女     | NULL   |
	+--------+--------+
	5 rows in set (0.00 sec)
	
	mysql> select count(distinct sex,addr) from my_student;                     ③
	+--------------------------+
	| count(distinct sex,addr) |
	+--------------------------+
	|                        2 |
	+--------------------------+
	1 row in set (0.00 sec)

	mysql> select count(1) from (select distinct sex,addr from my_student) a;	④
	+----------+
	| count(1) |
	+----------+
	|        5 |
	+----------+
	1 row in set (0.00 sec)

注意比较③和④的结果,也是不同的.

3.上述同样的操作在oracle数据库验证

1).针对上述1)的场景在oracle数据库中验证后,count(distinct col)也是会计算该列除 NULL 之外的不重复行数,同MySQL一样

2).针对上述2)的场景,count(distinct col1, col2)的写法在oracle数据库中不支持.

总结

到此这篇关于MySQL中count(distinct col...)组合使用的注意要点的文章就介绍到这了,更多相关MySQL count(distinct col...)组合使用内容请搜索编程网(www.lsjlt.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.lsjlt.com)!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中count(distinct col...)组合使用的注意要点详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中count(distinct col...)组合使用的注意要点详解

目录第一步:数据准备第二步:数据验证1.distinct单字段去重2.count和distinct配合使用3.上述同样的操作在oracle数据库验证总结第一步:数据准备mysql> select * from my_student;+-
MySQL中count(distinct col...)组合使用的注意要点详解
2024-08-09

编程热搜

目录