当前位置: 代码网 > it编程>数据库>Mysql > MySQL用户变量怎么定义?set和select用法详解一看就懂

MySQL用户变量怎么定义?set和select用法详解一看就懂

2026年07月24日 Mysql 我要评论
用户变量使用场景:定义一个值,方便其他的sql使用,相当于在不同的sql之间进行传递变量使用。两种定义用户变量的方式:set selectset的使用方法:set @变量名 {= | := } val

用户变量

使用场景:定义一个值,方便其他的sql使用,相当于在不同的sql之间进行传递变量使用。

两种定义用户变量的方式:set select 

set的使用方法: 

set @变量名 {= | := } value [,@变量名 {= | := } value,…] ; 

set的合法变量值:

  • 1.字面量
  • 2.可以系统表达式
  • 3.可以来自于一个sql语句
  • 4.可以是一个系统函数 

例1

定义用户变量pi,其初值为3.1415926

set @pi := 3.1415926; 

注意:用户变量的数据类型派生自其值的数据类型 

例2

定义一个变量,其值是1号球队的队长号码

set @anr := (select playerno from teams where teamno=1); 

获取变量的值: 

select @变量名; 

注意点:

mysql> set @a=1;
query ok, 0 rows affected (0.00 sec)
mysql> set @a=5,@b=@a;
query ok, 0 rows affected (0.00 sec)
mysql> select @b;
±-----+
| @b |
±-----+
| 1 |
±-----+
1 row in set (0.00 sec)

​当一次对多个变量定义时,mysql会同时检测等号右边的值是否成立,如果成立则将该值赋予用户变量,所以在本次当中b的值为a的旧值。

select设置用户变量:

select :=这种方式,因为=在select当中是比较操作符。

这种语法:

1)会返回一行

2)只能使用:=,不能使用=,=号这里被看做比较操作符

例3

创建用户变量playerno并赋值为7

select @playerno := 7;

例4

定义3个用户变量

select @name := ‘tom', @town := ‘inglewood',
@postcode := ‘1234ab';

例5

查询6号球员的姓名、城市和邮编,并保存到3个变量中

select @name := name, @town := town, @postcode := postcode
from players
where playerno = 6;

注意,如果select查询返回多行,就把最后一行的值赋给变量,而不会抛出异常

例6

定义变量@playerno,将players表中最小的球员编号赋给它:6

select @playerno := playerno
from players
order by playerno desc;
select @playerno;

注意:当用户变量用在where或者having子句中时,必须首先使用另外一条语句来定义它们 

例7

select @pnr7 := 7
from players
where playerno < @pnr7;

这条语句不会返回编号小于7的球员。因为where子句在select语句之前执行

用户变量的生命周期:

只要会话不断,该用户变量可以一直使用,如果想实现多个会话之间的用户变量传递,可以将用户变量保存到数据表中。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com