TO xuzuning(唠叨):这样不行,得到的结果如下,只有一行:@n:=@n+1 ------------ 1
晕你。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();
感谢感谢 ;-) ----------但是不知道这样为何不行:(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();
------------
1
select t.* from (select @n:=@n+1 as rownum,a.* from tt a order by a.cnt desc limit 5) t order by rand();
----------但是不知道这样为何不行:(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();
所以 if(isnull(@n),0,@n) 第一次执行的结果应该都是1,当第二次执行这句话的时候,rownum才会实现增长。