MySQL中,如何将SELECT结果赋值给变量

字数 177阅读 1970

正在努力MySQL学习中,一些细节的实现真的需要仔细钻研。

SELECT结果的赋值问题

今天研究了一下SELECT结果赋值给变量的问题,有两种方式:

SELECT @a := if(count(*) > 0, 0, 50)  FROM FirstReward WHERE UserID = 4 and HouseFlag> 0;
SELECT if(count(*) > 0, 0, 50) INTO @b FROM FirstReward WHERE UserID = 5 and HouseFlag> 0;
SELECT @a;
SELECT @b;
image.png
image.png

:= 和 =

如上 := 和 INTO 两种方法效果一样,至于 := 是什么呢,就是赋值符号,跟 = 有什么区别?

SELECT @c = if(count(*) > 0, 0, 50)  FROM FirstReward WHERE UserID = 4 and HouseFlag> 0;
SELECT @c;
image.png

对比一下很容易发现, := 成功赋值, = 没有成功赋值。我们看看官方文档怎么说:

image.png

文档说的很清楚,只有在SET方法中,=等同于:=赋值,其他情况下都是用于逻辑判断。

SET @d = 5;
SELECT @d;
image.png

推荐阅读更多精彩内容