如何在一个'select'列中修改两个变量?

时间:2017-02-26 00:03:11

标签: mysql sql

这是我想要做的表征。在人类术语中:当我的源表(my_table)中的rank = 2时,我希望我的名为rank2的列增加(++),我希望另一列增加( - )。具体来说,我希望rank1列增加一个。

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

SELECT 
create_date,
if(rank=1,@rank1:= @rank1+1,@rank1) rank1,
if(rank=2,(@rank2:=@rank2+1 and @rank1:=@rank1-1),@rank2) rank2
from my_table;

我在my_table中关注的列是

create_date datetime, 
rank int

如果重要的话,我的select语句将创建几个“rank”列(rank3,rank4等) - 为简单起见,我将其留下。

1 个答案:

答案 0 :(得分:0)

我相信这是我正在寻找的逻辑:

select 
   if(rank=1,@rank1:=@rank1+1,if(rank=2,@rank1:=@rank1-1,@rank1) rank1, 
   if(rank=2,@rank2:=@rank2+1,if(rank=3,@rank2:=@rank2-1,@rank2) rank2
from my_table;

然后该模式继续进行更高级别......