开发者社区> 问答> 正文

MySQL-在select中定义一个变量,并在同一select中使用它?mysql

有可能做这样的事情吗?

SELECT @z:=SUM(item), 2*@z FROM TableA; 我总是在第二列中得到NULL。奇怪的是,在做类似

SELECT @z:=someProcedure(item), 2*@z FROM TableA; 一切都按预期进行。为什么?

展开
收起
保持可爱mmm 2020-05-17 22:21:18 31066 0
1 条回答
写回答
取消 提交回答
  • 通常,永远不要为用户变量分配值,并且不要在同一条语句中读取该值。您可能会得到预期的结果,但这不能保证。涉及用户变量的表达式的求值顺序是不确定的,并且可能根据给定语句中包含的元素而改变;此外,在MySQL服务器的发行版之间,不能保证此顺序相同。在SELECT @a,@a:= @ a + 1,...中,您可能认为MySQL将首先评估@a,然后再进行赋值。但是,更改语句(例如,通过添加GROUP BY,HAVING或ORDER BY子句)可能导致MySQL选择评估顺序不同的执行计划。

    您可以使用子查询来执行所需的操作:

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

    2020-05-17 22:21:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像