position    | Average |   gpmp

1             70.60         2.0
2             60.20         2.3
3             59.80         4.8
4             59.80         4.8
5             45.70         5.6

大家好,
如上表所示,我需要根据最低gpmp和最高平均值来安排职位。但当平均值和gmp都相同时,我需要有相同的职位。
例如,位置3和位置4的平均值和gpmp相同。如何生成mysql查询或使用php函数,以便在它们检测到相同的平均值和gpmp并将位置4更改为3之后。
这意味着在函数生成之后,它将变成如下表所示的样子。
position    | Average |   gpmp

1             70.60         2.0
2             60.20         2.3
3             59.80         4.8
3             59.80         4.8
5             45.70         5.6

最佳答案

这里有一个简单的方法来更新表,正如您在文章中描述的那样——获取顺序位置并相应地更新它们。它不计算位置或任何东西,只使用已经存在的数据:

UPDATE `table` t SET position = (
    SELECT MIN(position) FROM (SELECT * FROM `table`) t2 WHERE t.Average = t2.Average AND t.gpmp = t2.gpmp
)

10-05 19:53