繁体   English   中英

MySQL变量值错误(SELECT INTO)

[英]MySQL wrong value in variable (SELECT INTO)

我正在MySQL中调试存储过程,但我不知道我的错误在哪里。 我有以下代码:

SELECT refreshToken.token FROM refreshToken WHERE refreshToken.accountId = 2;

此代码返回一个空集。 但是这段代码:

SELECT refreshToken.token INTO @a FROM refreshToken WHERE refreshToken.accountId = 2;
SELECT @a;

返回表中的第一个值。

这是因为@a已经用一些值初始化了。

当查询返回空记录时,全局变量将保留其先前的值。

因此,在运行查询之前清除变量值始终是一个好主意

set @a = null;
SELECT refreshToken.token INTO @a FROM refreshToken WHERE refreshToken.accountId = 2;
SELECT @a;

这应该显示@a为空

这是为了增加Akhil的答案(正确)。 使用会话变量很危险,因为它们已经被初始化了。 每次使用它们时,初始化它们都比较安全,一种方法是在查询本身中进行初始化:

SELECT @a := refreshToken.token
FROM refreshToken CROSS JOIN
     (SELECT @a := NULL) params
WHERE refreshToken.accountId = 2;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM