求教一个SQL的写法!

demonss001 2014-10-20 05:46:32
有这样一张表,里面有很多用户的操作数据,现在想对每个角色ID进行分组,并同时按时间来排序取第一条的某个字段
我写了一个语句,结果跑了1小时30分钟还没有跑完,所有用户的日志数据量在1000万条左右,用的是SQL 2008的库
update a set a.curcharge_qichu = (select top 1 beforeNum from dbSDC.dbo.gold_log20140601 b where a.gameserverid = b.gameserverid and
a.userid = b.userid and time >= '20140501' and time < '20140601' order by time) from shenji_db.dbo.stat_may a


请问大神有没有更好的写法,或者更高效的方法

效果就是想取一下的data123,fengliang两个用户0的那一条
gameserverid userid beforeNum
202 dada123 0
202 dada123 50
202 fengliang 0
202 fengliang 50
...全文
73 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
reenjie 2014-10-20
  • 打赏
  • 举报
回复
select gameserverid,userid,beforeNum from ( select gameserverid,userid,beforeNum ,row_number() over(partition by gameserverid,userid order by beforeNum asc) as rId from tablename ) as a where rId=1
还在加载中灬 2014-10-20
  • 打赏
  • 举报
回复
不知道我有没有理解错,直接判断beforeNum=0的那一条,可以这样吗
reenjie 2014-10-20
  • 打赏
  • 举报
回复
用row_number()

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧