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来控制需要排序的前多少个