我有一个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
答案 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)