MySQL Update运行Max

时间:2014-01-02 12:34:58

标签: mysql sql select sql-update max

我正在尝试创建一个查询,根据另一列的运行最大值更新正在运行的最大列,例如在这种情况下得分。

查询前的表格

time-----score---------current max
1-----------5--------------null
2-----------6--------------null
3-----------3--------------null
4-----------4--------------null
5-----------5--------------null
6-----------7--------------null
7-----------8--------------null
查询后的

time-----score---------current max
1-----------5--------------5
2-----------6--------------6
3-----------3--------------6
4-----------4--------------6
5-----------5--------------6
6-----------7--------------7
7-----------8--------------8

我们非常感谢任何建议。

2 个答案:

答案 0 :(得分:0)

select @max := case when score > @max 
                    then score
                    else @max 
               end as curr_max,
       time,
       score
from your_table, (select @max := 0) m

答案 1 :(得分:0)

试试这个:

UPDATE tableA A 
INNER JOIN (SELECT A.time, (@temp:=IF(score > @temp, score, @temp)) currentMax
            FROM tableA A, (SELECT @temp:=0) B
           ) B ON A.time = B.time
SET A.currentMax = B.currentMax