2016-12-31 101 views
0

我有一个表教练。表教练都有数据是这样的:如何在mysql中更新多行?

enter image description here

我想更新player_id列,因此该数据是这样的:

enter image description here

具有type =“教练” Player_id值从取type =“player”的id的值。这是采取基于字段信息与现场码值player_code之间的关系

我使用查询自己试图加入更新这样的:

UPDATE coach 
SET player_id = (
      SELECT b.id 
      FROM coach a 
      LEFT JOIN coach b ON REPLACE(JSON_EXTRACT(b.information, "$.player_code"), '"', '') = b.code 
      WHERE b.`type` = 'player' 
     ) 
WHERE `type` = 'coach' 

当被执行查询,存在错误像这样:

Error Code: 1093 
You can't specify target table 'coach' for update in FROM clause 

有没有人可以帮助我?

回答

1
update coach as c1 
inner join (
    select b.id, 
     b.code 
    from coach b 
    where b.`type` = 'player' 
    ) as c2 on REPLACE(JSON_EXTRACT(c1.information, '$.player_code'), '"', '') = c2.code 

set c1.player_id = c2.id 
where c1.type = 'coach'; 
+1

太好了。有用。谢谢 –