Mysql 如果不为空,则从同一字段更新空字段

Mysql 如果不为空,则从同一字段更新空字段,mysql,sql-update,mariadb,Mysql,Sql Update,Mariadb,我想用与同一个表中完全相同的名称匹配的现有PlayerId更新所有空PlayerId字段 对于相同的名称,我有一些NULL PlayerID,还有一些具有良好的值: SELECT count(*) as c, Name, PlayerId FROM my_table WHERE Name = 'John,Doh' GROUP BY PlayerId order by c ASC; +---+-----------+-------------+ | c | Name

我想用与同一个表中完全相同的名称匹配的现有PlayerId更新所有空PlayerId字段

对于相同的名称,我有一些NULL PlayerID,还有一些具有良好的值:

    SELECT count(*) as c, Name, PlayerId FROM my_table 
    WHERE Name = 'John,Doh' GROUP BY PlayerId order by c ASC;


+---+-----------+-------------+
| c | Name      | PlayerId    |
+---+-----------+-------------+
| 2 | John,Doh  |        NULL |
| 8 | John,Doh  |     2900084 |
+---+-----------+-------------+
我不知道是否可以从同一个表中创建一个临时表


谢谢,

谢谢在编辑之前它工作得很好,但是查询速度很慢OK,59行受影响(5分钟56.45秒)行匹配:1110更改:59您认为编辑后它会最快吗(我会尝试,但需要先重置数据库)?如果您有性能问题,请查看表中定义的索引并对其进行优化。当您有两个同名玩家时会发生什么情况?该名称以前是主键,但现在出现了一个id,因此我需要首先传播它,然后,我将使用id匹配玩家。。。
update your_table t1
join your_table t2 on t1.name = t2.name
                  and t2.playerId is not null
set t1.playerId = t2.playerId
where t1.playerId is null