MySQL如何重用select列别名,当我别名子查询时?

时间:2015-04-15 17:14:15

标签: mysql sql subquery column-alias

我有类似的东西:

Select1 ... 
        ,(fieldA - fieldB) AS Y, 
        ,(Select2 
                 (Select3 percent 
                    From ... 
                    Join.... 
                    Where ... 
                    Order by some_date 
                    Limit 1) AS X 
            From ... 
            Join... 
            Where ... 
            Order by some_date2 
            Limit 1) AS X
        ,(X * Y) AS output
  From ...
  Join ...
  Join ...
  • 是的我选择嵌套内部选择里面选择 - 每个使用一级以上的值(它们不能在没有外层的情况下工作!)
  • 选择被使用是因为我需要在"最接近给定但不是更新的日期后过滤"在每个选择
  • 正如您所看到的,我重用了嵌套选择中返回的结果
  • 现在我将嵌套的Select复制到我在上面伪代码中编写X的位置

在我需要重用嵌套选择返回的值之前,一切正常。

如何在"输出"的定义中重用X别名?柱吗

PS现在不要将代码作为A4以上的代码!它按预期工作,但眼睛很难。

1 个答案:

答案 0 :(得分:1)

您可以再次使用另一个嵌套SELECT来完成此操作。然后,这个新的最外层SELECT可以访问XY

Select0
        ...
        ,(X * Y) AS output
    From (
        Select1 ... 
            ,(fieldA - fieldB) AS Y, 
            ,(Select2 
                     (Select3 percent 
                        From ... 
                        Join.... 
                        Where ... 
                        Order by some_date 
                        Limit 1) AS X 
                From ... 
                Join... 
                Where ... 
                Order by some_date2 
                Limit 1) AS X
      From ...
      Join ...
      Join ...) AS values