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

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

Barbara Streisand
发布: 2024-12-02 13:01:11
原创
992 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板