从选择中查询SQL更新

时间:2019-07-04 13:22:56

标签: mysql sql mariadb

如何使用SQL查询更新此列排名

char_id|char_name|point|w_point|rank|
-------|---------|-----|-------|----|
 100000|Adminn   |   17|     17|   0|
 100008|admin3   |    2|      2|   0|

带有选择

SELECT 
    char_id, 
    char_name, 
    `point`,
    `w_point`,
    RANK() OVER (ORDER BY `point` DESC) as `rank`
FROM 
    glro_worlddrop;

我要在排名列中更新的结果

char_id|char_name|point|w_point|rank|
-------|---------|-----|-------|----|
 100000|Adminn   |   17|     17|   1|
 100008|admin3   |    2|      2|   2|

谢谢

1 个答案:

答案 0 :(得分:1)

假设char_id是唯一的,请使用JOIN

UPDATE glro_worlddrop w JOIN
       (SELECT w.*,
               RANK() OVER (ORDER BY `point` DESC) as new_rank
        FROM glro_worlddrop w
       ) ww
       USING (char_id)
    SET w.rank = ww.new_rank;