用户变量!set @n:=0;
select @n:=@n+1 limit 5;

解决方案 »

  1.   

    TO xuzuning(唠叨):这样不行,得到的结果如下,只有一行:@n:=@n+1  
    ------------
    1
      

  2.   

    晕你。set @n=0;
    select t.* from (select @n:=@n+1 as rownum,a.* from tt a order by a.cnt desc limit 5) t order by rand();
      

  3.   

    感谢感谢 ;-)
    ----------但是不知道这样为何不行:(select t.* from (select @n:=if(isnull(@n),0,@a)+1 as rownum,a.* from tt a order by a.cnt desc limit 5) t order by rand();
      

  4.   

    if(isnull(@n),0,@a)---------------------if(isnull(@n),0,@n)
      

  5.   

    不好意思 手误了即使是if(isnull(@n),0,@n)也不行 ;-(
      

  6.   

    @n是null,null在mysql变量中被认为是字符串,即使是在后面把他设置成了数字,但也仅是在下一句sql中被视为数字型变量。
    所以 if(isnull(@n),0,@n) 第一次执行的结果应该都是1,当第二次执行这句话的时候,rownum才会实现增长。