这是我想要做的表征。在人类术语中:当我的源表(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等) - 为简单起见,我将其留下。
答案 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;
然后该模式继续进行更高级别......