我可以在MySQL查询中重用一个表达式作为另一个字段的变量吗?

时间:2009-09-02 14:37:52

标签: mysql

是否有任何解决方法,所以我实际上可以做这样的事情而不必重复整个表达式或强制使用UNION或临时表?

SELECT  (complex expression) AS variable1,
        (complex expression based on variable1) AS variable2

由于mysql的工作方式没有定义并且第2项可用,因此上述概念永远不会起作用。

我要么必须重复变量2的表达式,要么使用UNION或临时表并使用两遍。

是否有一些我不知道的技巧可以更有效地实现这一目标?

(请注意,我需要知道变量1和变量2的答案,因为它们用于INSERT)

感谢您的任何想法!

3 个答案:

答案 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