首页 >数据库 >mysql教程 >我可以在单个 MySQL SELECT 语句中使用用户定义的变量吗?

我可以在单个 MySQL SELECT 语句中使用用户定义的变量吗?

Barbara Streisand
Barbara Streisand原创
2024-12-02 13:01:11943浏览

Can I Use a User-Defined Variable in a Single MySQL SELECT Statement?

我可以在 SELECT 中定义变量并在同一语句中使用它吗?

在 SELECT 中定义和使用变量的可能性同样的 SELECT 语句经常受到质疑。考虑以下示例:

SELECT 
    @z:=SUM(item),
    2*@z
FROM
    TableA;

在这种情况下,第二列始终返回 NULL。这是很奇怪的,因为使用存储过程的类似操作按预期运行:

SELECT 
    @z:=someProcedure(item),
    2*@z
FROM
    TableA;

解释

MySQL 文档明确指出为用户变量赋值在同一个声明中阅读它是不可靠的。用户变量的计算顺序是未定义的,并且可能会根据语句元素和 MySQL 服务器版本而有所不同。因此,无法保证预期的结果。

解决方案

要达到预期的结果,可以使用子查询:

select @z, @z*2
from (SELECT @z:=sum(item)
      FROM TableA
     ) t;

以上是我可以在单个 MySQL SELECT 语句中使用用户定义的变量吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn