2015-04-15 68 views
0

我有類似:MySQL如何重用選擇列別名,當我別人的子查詢?

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 ... 
  • 是的,我有嵌套選擇內選擇內選擇 - 從上一級(!他們不會工作,而外部水平)
  • 選擇每個使用值的使用,因爲我需要經過過濾器「日期最接近給出,但不是新的」在每個選擇
  • ,你可以看到我重新使用現在我複製嵌套選擇的地方,我在AB寫X在嵌套選擇返回兩次
  • 結果ove僞代碼

一切都好,直到我需要重用該嵌套選擇返回的值。

如何在「output」列的定義中重用X別名?

PS現在不會過去的代碼,因爲它現在更多的A4!它按預期工作,但在眼睛上很難。

+0

爲什麼不使用常規的JOIN語句? – Alex

+0

原因嵌套的LEFT JOIN抱怨未找到列。這些列應該來自大多數外部JOIN,但是在嵌套JOIN中需要。嵌套選擇不會抱怨他們。 –

回答

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