1 前言
由于项目中有一个需求,需要把当日当周的排行榜数据归档,以便后期查询和发放奖励。然而发现,mysql的变量只能存一个变量值,然后如果要储存一条记录,可以使用CONCAT_WS,如果要储存多条记录,则再其基础上使用GROUP_CONCAT方法,再配合order by 某字段即可。
2 代码
//默认值查询num>0,条件可以按需改动
select GROUP_CONCAT(CONCAT_WS("|",t1.uid,num,name) order by num desc) into @content from rank t1,users t2 where t1.uid=t2.uid and num > 0;
分析:缺点,此方法无法用limit来分段查询,如果要使用limit分段才行,可以在条件num这边下手,代码如下:
//获取第30名次用户的num数值
SET @limit = select num from rank order by num limit 29,1
//前面代码的条件就可以改成
num>@limit,
3 小结
作为记录使用。如果你们有更好的方案,请你也告诉我一下,互相交流,谢谢!