博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mySQL去重和计数
阅读量:6226 次
发布时间:2019-06-21

本文共 820 字,大约阅读时间需要 2 分钟。

在工作中用到了,就返回来看看。

首先查询数据库中重复数据示例SQL

SELECT    user_id, count(1)FROM    kx_st_user_earning WHERE statistics_type = 3GROUP BY    user_idHAVING count(1) > 1

 

需求:数据用到了ORDER BY然后分页查询的时候就需要去重然后再计数。

Distinct的作用是用于从指定集合中消除重复的元组,经常和count搭档工作,语法如下

COUNT( { [ ALL | DISTINCT ] expression ] | * } )

这时,可能会碰到如下情况,你想统计同时有多列字段重复的数目,你可能会立马想到如下方法:

select count( distinct col1 , col2 , col3 , .......) from table

但是,这样是不允许的,因为count是不能统计多个字段的,虽然distinct是可行的。

 

有种比较直接的方法就是把消除重复后在统计查询:

 select count(*) from (select distinct col1 ,col2 , col3 from table)A

 

但是在有些复杂情况下,比如你的统计值可能还需要作为新的临时表的一列,而且这个新表可能还在做些其他复杂查询时候,这样就不是很方便了。

 

有种方法比较特别,就是把多个字段的当做一个字段去用于消除重复,比如把这个多个字段的字符串连接起来。如下:

selectcount(DISTINCT fcode+cast(fread_date as varchar(30))) from my_table

这种解决方案在某些情况还是挺方便的,虽然效率不高

 

转载自: 

   参考: 

 

转载于:https://www.cnblogs.com/technologykai/articles/8399904.html

你可能感兴趣的文章
华云CloudIDC 给传统IDC企业一个转云的机会
查看>>
小鹏汽车选用芯片Xavier 联手英伟达打造L3级中国式自动驾驶
查看>>
一个看起来呆萌的核物理学霸为何两次收到BlackHat的邀请
查看>>
国际篮联三人篮球亚洲杯连续三年落户长沙
查看>>
长沙开通首条直飞缅甸曼德勒国际航线
查看>>
探访新疆喀什老城:从连片危房到5A景区
查看>>
重庆市交通行政执法总队发布春运“避堵”线路图
查看>>
北京所有社区卫生服务中心今年将全部“先诊疗、后结算”
查看>>
QNAP(威联通)联合创始人郭博达先生一行到访
查看>>
浏览器中唤起native app || 跳转到应用商城下载(一)
查看>>
springboot(十七):使用Spring Boot上传文件
查看>>
Vue中你不知道但却很实用的黑科技
查看>>
阿里云消息中间件(MQ)探秘
查看>>
基础排序算法详解与优化
查看>>
与我一起学正则
查看>>
练就Java24章真经—你所不知道的工厂方法
查看>>
手游中实时音视频的开发经验与实现技巧
查看>>
saiku+kettle整合(十)缓存控制
查看>>
微信支付,支付宝支付,银联支付——三大支付总结
查看>>
Android Sunflower 带您玩转 Jetpack
查看>>