如何在MariaDB/MySQL中将查询结果赋值到@var1、@var2变量?
MariaDB/MySQL 中给变量赋值的正确语法
针对你从my_table获取数据存入变量的需求,MariaDB和MySQL支持两种常用的语法,替代SQL Server的写法:
方法1:使用:=赋值运算符
直接在SELECT语句中给会话变量赋值,写法和SQL Server类似,仅需把赋值符号从=换成:=(因为MySQL/MariaDB中=在SELECT子句里是比较运算符):
SELECT @var1 := field1, @var2 := field2 FROM my_table WHERE id = @varid;
如果查询返回多行,变量会被最后一行的结果覆盖。
方法2:使用SELECT ... INTO语法
这种写法更简洁,要求查询必须返回恰好一行(无结果或多结果都会报错),适合确定只有一条匹配数据的场景:
SELECT field1, field2 INTO @var1, @var2 FROM my_table WHERE id = @varid;
额外说明
@varid这类带@的是会话变量,无需提前声明即可使用,作用域为当前数据库连接。- 如果是在存储过程/函数中使用局部变量(不带
@),需要先声明类型再赋值,例如:
DECLARE var1 INT; DECLARE var2 VARCHAR(50); SET var1 = (SELECT field1 FROM my_table WHERE id = varid); SET var2 = (SELECT field2 FROM my_table WHERE id = varid);
或者用SELECT ... INTO给局部变量赋值:
DECLARE var1 INT; DECLARE var2 VARCHAR(50); SELECT field1, field2 INTO var1, var2 FROM my_table WHERE id = varid;
内容的提问来源于stack exchange,提问作者Nugroho Moristianto
相关产品推荐
相关产品推荐

