= 只有在set和update时才是和:=一样,赋值的作用,其它都是等于的作用。鉴于此,用变量实现行号时,必须用:=。
:= 不只在set和update时时赋值的作用,在select也是赋值的作用。
测试数据如下:
下面是:=和=的在select时作用对比
@num:=@num+1,:=是赋值的作用,所以,先执行@num+1,然后再赋值给@num,所以能正确实现行号的作用
set @num = 0;
SELECT @num := @num + 1 as rowno, country FROM test;
结果如下:
@num=@num+1,此时=是等于的作用,由于@num不等于@num+1,所以始终返回0,如果改为@num=@num,始终返回1了。mysql数据库中,用1表示真,0表示假。
set @num = 1;
SELECT @num = @num + 1 as rowno, country FROM test;
结果如下:
set @num = 1;
SELECT @num = @num as rowno, country FROM test;
结果如下: