2016-12-31 6 views
0

私はテーブルコーチを持っています。タイプ=「コーチ」とmysqlで複数の行を更新するにはどうすればよいですか?

enter image description here

Player_id値は以下から取得されます。表のコーチは、このようなデータています。データは次のようになりますので、

enter image description here

私はplayer_id列を更新したいですtype = "player"のidの値。なお、このように更新する参加Iクエリ自己を使用しようとしたフィールドコード

持つフィールド情報内の値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

グレート。できます。ありがとう –

関連する問題