是否有任何解决方法,所以我实际上可以做这样的事情而不必重复整个表达式或强制使用UNION或临时表?
SELECT (complex expression) AS variable1,
(complex expression based on variable1) AS variable2
由于mysql的工作方式没有定义并且第2项可用,因此上述概念永远不会起作用。
我要么必须重复变量2的表达式,要么使用UNION或临时表并使用两遍。
是否有一些我不知道的技巧可以更有效地实现这一目标?
(请注意,我需要知道变量1和变量2的答案,因为它们用于INSERT)
感谢您的任何想法!
答案 0 :(得分:6)
将第一个计算推送到派生表:
select variable1
, complex_function(variable1, other_column) as variable2
, yet_another column
from (select complex_operation as variable1
, other_column
, yet_another_column
from whatever) dt
答案 1 :(得分:4)
SELECT @v1:=(complex expression) AS variable1,
(complex expression * @v1) AS variable2
答案 2 :(得分:0)
我认为唯一的方法是在你的第二个中重复你的第一个complex_expression,虽然我认为mysql可以处理这种情况。
编辑:快速搜索:http://dev.mysql.com/doc/refman/5.0/en/user-variables.html