正在努力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









网友评论