我现在有个数据表,字段数据如下编号                    姓名   
1                        张三1
12                     王五
565                    张三3
2                         李四
4                       刘正
7                        周六
8                        齐全我要按照一定的分组数,比如我现在要分成3组,这个组是动态变化,又可能为2组,5组,此处举例暂定为3组,
我想得到如下结果编号                    姓名                          组编号
1                        张三1                            1
12                     王五                                1
565                    张三3                             2
2                         李四                              2                         
4                       刘正                                3
7                        周六                                3
8                        齐全                                1
请问各位兄弟,怎么解决啊,这种问题,在sql中,谢谢!

解决方案 »

  1.   


    ----这种方法可以实现,只是效率不高估计set @gg=5;select @gg;-- 结果 select csid,ranks,rank from (  
    select heyf_tmp.csid,heyf_tmp.ranks,@rownum:=@rownum+1 ,  
    if(@pdept=heyf_tmp.ranks,@rank:=@rank+1,@rank:=1) as rank,  
    @pdept:=heyf_tmp.ranks  
    from (   
    select * from 
    (
    select csid,ceil(rownum/@gg) as ranks
    FROM(  select a.*,
    (select count(*) from channelsp where csid<=a.csid) as rownum
    from (select csid from channelsp) a ) b) c
    ) heyf_tmp ,(select @rownum :=0 , @pdept := null ,@rank:=0) a ) result   
      

  2.   

    只有分组数,没有固定标准吗,那可以设置自增id,根据id 和分组数取余来分组,效率应该不会太慢
      

  3.   

    qq_36773742
    本版等级:T1
    结帖率:0%