在mySQL中将select语句的聚合结果赋值给用户变量

4
我将尝试保存一个用户变量,并使用表中count函数的结果。
执行以下查询:
SELECT @var:=count(distinct(column1)) FROM table_name;

返回:

@var:=count(distinct(column1))
41243

然后执行:

SELECT @var;

返回:

@var
Blob

当我期望的是41243时。

当我给一个用户变量赋值时,它按预期工作。

我做错了什么?

谢谢。


编辑: 我已经将$var更正为@var。

我正在使用mySQL Workbench进行测试查询。最终我会在PHP中使用它。

另一个相关问题:我可以将SELECT结果分配给用户变量,而不必将结果(在我的示例中为41243)发送回客户端吗?(如果我从PHP中使用它,它将减慢查询速度。)


1
你是否碰巧从 PHP 发出了 SELECT $var; 命令? - RandomSeed
1
"$var" 看起来像是一个 PHP 变量。请展示你调用它的代码。 - Kermit
1
我不太擅长mysql变量,但你确定应该使用$var而不是@var吗?这里有一个例子:http://sqlfiddle.com/#!2/ec009/3 - Travesty3
你是指:SELECT @var:=count(distinct(column1)) FROM TABLE; - Strawberry
我很肯定 - 我认为MySQL Workbench可能会显示不正确,因为我尝试将@val插入到临时表中,它似乎得到了正确的值。 - user2314343
显示剩余2条评论
1个回答

2
您只需要将返回值转换为blob类型即可:
SELECT @var:=count(distinct(column1)) FROM table1;
SELECT convert(@var,unsigned);

因为结果是二进制字符串 (blob),所以你只需要将它转换成整数 (在这种情况下是无符号整数,但如果你使用“带符号的”,那么你会得到带符号的整数。
希望这能帮助到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接