将select的聚合结果分配给mySQL中的用户变量

时间:2013-06-28 13:08:38

标签: mysql sql

我正在尝试从表中保存带有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 个答案:

答案 0 :(得分:0)

您只需转换blob类型返回值:

SELECT @var:=count(distinct(column1)) FROM table1;
SELECT convert(@var,unsigned);

因为结果是blob(二进制字符串),你只需要将它转换为整数(在这种情况下是unsigned int,但是如果你使用'signed',那么你将得到有符号整数。

希望这有帮助。