mysql分组查询字段值重复出现的次数,进行重复筛选,排序,合并
SQL
0
我们常常遇到很多的数据进询时,需进行分组取第一条,分组合并,分组取到所有的值,分组取重复出现次数最多的前几项等。
下边就是实在的SQL了,
查询分组统计出现两次以上的数据
select 单号 from tablename group by 单号 HAVING COUNT(*)>1
查询分组统计出现两次以上的数据,并且取到最大的序号,
select 单号,,count(*)sl ,max(序号) 序号,group_concat(DISTINCT (序号)) bill_code from tablename group by 单号 HAVING COUNT(*)>1 ORDER BY sl DESC LIMIT 0,3
上边句字中 max(序号) 即取分组中最大的
group_concat(序号) 把分组后对应的所有序号合并了组成一个字段
group_concat(DISTINCT (序号)) 把分组后对应的所有序号去重后合并了组成一个字段,
group_concat(distinct 序号 SEPARATOR ';') 其中 SEPARATOR ';' 为指定以 ; 分隔合并的字符
在使用group_concat做插入更新时,一定要注意在MySQL中有个配置参数group_concat_max_len,它会限制使用group_concat返回的最大字符串长度,默认是1024。
加上下边两句临时修改限制弯量以使用。
SET GLOBAL group_concat_max_len = 1024 * 1000;
SET SESSION group_concat_max_len = 1024 * 1000;
create table poems_author_wjhj
as
SELECT shiauthorid,concat('《',group_concat(distinct title SEPARATOR '》,《'),'》') sz FROM `dr_1_news` a
where a.lx='poems'
group by shiauthorid
HAVING COUNT(*)<10
;
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。