2013-10-10 42 views
0

執行select 2*2 as 'm', (m*2) as 'n'回報「選擇2 * 2爲'm',(m * 2)爲'n';」返回錯誤

/* SQL Error (1054): Unknown column 'm' in 'field list' */ 

有沒有辦法爲列子句中使用列的別名?

也:

select sum(x) as sum, sum*2 as doubleSum from myTable; 
+0

已經回答了,停止編輯>< – AdrianBR

+0

@AdrianBR如何搞笑評論! – PHPst

+0

你一直在改變這個問題。如果在現有問題得到解答後您有其他問題,請發佈其他問題。因爲你的問題發生了變化,所以我沒有對答案投票。 – AdrianBR

回答

2

您可以通過使用變量做到這一點,像

select @m:=2*2 as m, @m*2 as n 

- 你可能以後要使用n(實際上,這將是@n,你將能夠使用,但不能直接n),那麼這將是

select @m:=2*2 as m, @n:[email protected]*2 as n 
1

編輯:OP編輯問題

,如果你想要的參數,使用下面的語法

select @m:=2 as m, @m+1 as n 

select @m:=2*2 as 'm', (@m*2) as 'n' 

在現實生活中的例子,也適用此

select @sum:=sum(impression) as sum, (@sum)*2 as doubleSum from kpi_funnel; 
+0

neg voter,關心評論?他編輯了他的問題3次 – AdrianBR

+0

是Alma Do Mundo的回答後的第一個編輯? – PHPst

+0

是的,你可以檢查歷史 – AdrianBR

2

你可以做到這一點與一個子查詢:

select m, (m*2) as n 
from 
(
    select 2*2 as m 
) sub_query 
+0

子查詢增加時間,不必要 – AdrianBR

+0

@AdrianBR但同時它將在其他DBMS工作,因爲它是一個有效的SQL,不依賴DBMS特有的功能,如MySQL變量 –

+0

問題是MySQL的。如果你有一個很好的原生函數,並且不需要可移植性,爲什麼你會使用一個更慢的變體 – AdrianBR