[英]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.