有可能做这样的事情吗?
SELECT @z:=SUM(item), 2*@z FROM TableA; 我总是在第二列中得到NULL。奇怪的是,在做类似
SELECT @z:=someProcedure(item), 2*@z FROM TableA; 一切都按预期进行。为什么?
通常,永远不要为用户变量分配值,并且不要在同一条语句中读取该值。您可能会得到预期的结果,但这不能保证。涉及用户变量的表达式的求值顺序是不确定的,并且可能根据给定语句中包含的元素而改变;此外,在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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。