根据另一列中的最高值更新列

时间:2017-11-20 15:52:50

标签: mysql sql-update

我有一个SQL数据库,其中有一个名为'PP_Match'的表,其中有几列。

ID,Position_1,Position_2,Round和Draw_size

在此表ID中,Position_1和Position_2是一个复合键!

我想根据“Round”列中的最高值更新Draw_size列。为了使这个更有趣,Draw_size列应该显示你在任何类型的运动中使用的淘汰赛抽奖(消除抽奖)。

因此,如果Round中特定ID的最高值为1,那么我想在Draw_size中显示“2”。如果最高值为2,那么draw_size为4,而Round列中的3将在draw_size中返回8,依此类推(4 = 16,5 = 32,6 = 64,7 = 128)。

我想更新特定ID的所有行。

假设ID 001在数据库中有5行,其中“Round”中的最大值为3,那么我想用Draw_size值8更新所有5行......

我多次尝试过失败......

谢谢你们的帮助!!!

/ Fred

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效

UPDATE PP_MATCH pp1
LEFT JOIN (
   SELECT ID, MAX(ROUND) as Max_Round FROM PP_MATCH GROUP BY ID) A 
ON A.ID = pp1.ID
SET pp1.Draw_size = POW(2, Max_Round)