如题 
  
count( * )  referuser 推荐加入的用户ID 
1 2 
2 3 
3 NULL 我用存储过程的cursor 取得上面记录集,怎么样才能将指针先移到 3,NULL 即最后一条记录上(该记录为汇总记录),然后再移到第一条记录上,开始repeat

解决方案 »

  1.   

    drop procedure if exists get_recommend_score;
    create procedure get_recommend_score(in user_id int,in direct_param flaot,in indirect_param float,out total_score int)
    begin
    declare done int default 0;
    declare tmp_score int 10;
    declare tmp_user_id int 10;
    declare cur2 cursor for select count(*),referuser from liv_user where referuser in (select user_id from liv_user where referuser=user_id) group by referuser 
    WITH ROLLUP;
    declare continue handle for sqlstate '02000' set done = 1;
    select count(*) into total_score from liv_user where referuser= user_id;

    total_score = total_score*direct_param;
    repeat
    open cur2;
    fetch cur2 into tmp_score;
    close cur2;
    until done end repeat ;

    tmp_score = tmp_score * indirect_param;


    end这是代码
    那个统计是rollup 添加上来的,只能在最后一样,如果单独读总计,要多查询数据库啊
      

  2.   

    tmp_score   =   tmp_score   *   indirect_param; 这句写在循环外,那那个循环有什么用?看得不是很懂