2017-02-26 48 views
0

下面是我想要做的一個表徵。以人爲條件:當我的源表(my_table)中的rank = 2時,我希望我的列名爲rank2增加(++),並且我希望另一列向下遞增( - )。具體來說,我希望rank1列增加一個。如何修改一個'select'列中的兩個變量?

set @rank1   = 0 ; 
set @rank2   = 0 ; 
-- ... 

SELECT 
create_date, 
if(rank=1,@rank1:= @rank1+1,@rank1) rank1, 
if(rank=2,(@rank2:[email protected]+1 and @rank1:[email protected]),@rank2) rank2 
from my_table; 

我關心MY_TABLE的列是

create_date datetime, 
rank int 

如果它的事項,我的select語句將創建幾個 '排名' 列(rank3,rank4等) - 我爲了簡單起見,不要放棄。

+1

樣本數據和預期的結果真的會澄清你想要做什麼。您的代碼似乎與您的描述無關。 –

+0

@GordonLinoff,基本上如果我看到等級2,這意味着我的實體從1到2,而且我計算每個等級。所以我的意思是說rank2 ++,rank1--(因爲我有1個更少的rank1和更多的rank2)。 – ColinMac

+0

。 。正如我所說,樣本數據和期望的結果將真正幫助解釋您正在嘗試做什麼。 –

回答

相關問題