摘要: 角色 积分 排名1 100 2 130 3 134 4 131 5 123 6 103 7 104 每日按照积分重新排名一次,计算按照积分的排名前50常规思路: 1、select * from xxx order by 积分 desc limit 50 2、程序里计算 逐个update 排名 = yyy where 角色 = 。。。不借助额外临时表的情况下,还有更简便的方法么?经过折腾试验一番,总结了一条sql:update xxx as t1,(selec... 阅读全文
posted @ 2014-01-09 16:46 优雅的c 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 最近,项目中的所有crond定时尽量取消,改成触发式。比如每日6点清理数据。原来的逻辑,写一个crond定时搞定现在改为触发式6点之后第一个玩家/用户 进入,才开始清理数据。出现了一个问题1 如何确保第一个玩家触发?update xxx set shijian = date('Y-m-d',time()-6*3600) 返回为0 则表示已有人触发过 返回1 表示第一个玩家 触发这又出现了一个问题:第一个人进入,触发清理数据。第二个人进入,进入正常数据操作,但是第一个人触发的清理数据操作也许并未完成。第二个玩家操作的数据可能被清理数据清理掉,如何防止??最后总结了一套比较可行的方 阅读全文
posted @ 2014-01-09 16:41 优雅的c 阅读(191) 评论(0) 推荐(0) 编辑