MySQL - 更新所有记录以匹配组中的最大值

Der*_*gan 2 mysql

我有一个像这样的交易表

id , name , code  ,  flag 
1 ,  john , 1234-3,   2
2 ,  joe  , 1111-2,   1
3 ,  paul , 1234-3,   3
4 ,  asdf , 1234-3,   3
5 ,  asdf , 1111-2,   5
6 ,  asdf , 1234-3,   8
7,   asdf , 1234-3,   0
Run Code Online (Sandbox Code Playgroud)

基本上,我想要做的是将'flag'fild中的所有数字设置为与特定代码相关的最大值.

因此,在代码1234-3的情况下,它应该使用具有标记num 8的代码更新所有标志,在1111-2的情况下,它需要用该代码用5更新所有标志.

我想将它转换成这个表

id , name , code  ,  flag 
1 ,  john , 1234-3,   8
2 ,  joe  , 1111-2,   5
3 ,  paul , 1234-3,   8
4 ,  asdf , 1234-3,   8
5 ,  asdf , 1111-2,   5
6 ,  asdf , 1234-3,   8
7 ,  asdf , 1234-3,   8
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想在MySQL中完成这个.有一大堆数据.

Qua*_*noi 8

UPDATE  t_transaction tu
JOIN    (
        SELECT  code, MAX(flag) AS flag
        FROM    t_transaction
        GROUP BY
                code
        ) t
ON      tu.code = t.code
SET     tu.flag = t.flag
Run Code Online (Sandbox Code Playgroud)