mysql分组查询

mysql分组查询

利用group_concat对数据分组排序,再拼接后,形成了拼接字符串,在通过find_in_set来在拼接字符串中获取到排序后的主键,最后挨个输出(如下)

select * from cg_personefficiency cp , 
(select group_concat(rowguid order by ProcessNum desc ) as rowguidall from  cg_personefficiency where 1=1
group by DATE_FORMAT(CalcTime ,'%Y-%m')) as b
 where find_in_set(cp.RowGuid,b.rowguidall) between 1 and 5 order by CalcTime asc , ProcessNum desc 

表1作为原表,表2作为排序后拼接字符串的表,

group_concat(参数1),参数1为拼接的参数,会以,隔开的形式拼接,如果后面更着order by 就会以某种排序来拼接,没有order by的话会随机.
find_in_set(参数1,参数2),参数1为查找参数,参数2为分号隔开的字符串,例如find_in_set(id,“1,2,3,4,5”),和in作用类似但不完全相同.

通过find_in_set来查找排序后的字符串,在通过between来控制需要排序的前多少个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值