MySQL中统计去重后IDNumber总数的实现问题咨询
解决统计不重复IDNumber总数的问题
你现在遇到的问题是因为GROUP BY IDNumber会把相同ID的记录分组,然后count(*)统计的是每个分组里的记录数,所以得到的是每个ID出现的次数(2、2、1),而不是去重后的ID总数。
要实现你想要的“重复ID仅计1次”的统计需求,只需要在COUNT里加上DISTINCT关键字就可以了——它会先对IDNumber字段去重,再统计唯一值的数量。
正确的查询语句如下:
SELECT COUNT(DISTINCT IDNumber) AS Total FROM esd_user;
执行这条语句后,会直接返回3,也就是你期望的不重复ID总数。
如果想要输出和你示例里一样的“Total is '3'”格式,不同数据库的字符串拼接语法略有不同,以MySQL为例,可以这样写:
SELECT CONCAT('Total is ', COUNT(DISTINCT IDNumber)) AS Result FROM esd_user;
这样查询结果就会直接显示为Total is 3。
内容的提问来源于stack exchange,提问作者user9510319
相关产品推荐
相关产品推荐

