在Mysql中,你可以将SELECT语句的返回值赋给一个用户自定义变量,并且可以在你之后的Mysql会话中使用该变量。这为保存一条语句的返回结果然后在其他的语句中引用,提供了一个方便的途径。
首先,让我们看一下在SELECT语句中赋值给用户变量的语法:
@var_name:=value
下面是一个先在SELECT语句中赋值给用户变量,在另一句语句中使用的例子:
select @u1_cid:=cityid from user where uid=1;
select * from user where cityid=@u1_cid;
用户变量也可以由任意的表达式来赋值,具体例子如下:
select @max_money:=max(money) from user;
用户变量的另一个用途是保存一个AUTO_INCREMENT列的表中插入新的一行后LAST_INSERT_ID()的结果,例如:
select @last_id:=LAST_INSERT_ID();
需要注意的是,如果你使用返回多行记录的语句赋值给一个用户变量,那么只有最后一行的值会赋给该用户变量。
如果select语句没有任何返回值,那么用户变量的赋值不会发生变化。如果该用户变量之前从未被使用,那么值为NULL。
你也可以通过SET @sum=11;这种语法来为用户变量赋值。
这种语法同样可以将一个SELECT的结果赋给一个变量,例如:
SET @max_money=(SELECT MAX(money) FROM user);