sql语句 如下:
SELECT nick_name FROM t_user WHERE type = 1;
得到的结果是:
张三
李四
王五
而现在我想要的结果是:
1 张三
2 李四
3 王五
应该如何写sql呢?
可以用 @rownum := @rownum+1 实现 递增的功能 。
SELECT @rownum := @rownum+1 AS rank, nick_name
FROM (SELECT @rownum:=0)r , t_user
WHERE type = 1;
说明:
:=和=有什么区别呢
-
=
-
只有在set和update时才是和:=一样,赋值的作用,其它都是等于的作用。鉴于此,用变量实现行号时,必须用:=
-
-
:=
-
不只在set和update时时赋值的作用,在select也是赋值的作用。
-
如果明白了=和:=的区别,那么也就理解了下边的现象。
@num:=@num+1,:=是赋值的作用,所以,先执行@num+1,然后再赋值给@num,所以能正确实现行号的作用。