2016-12-31 2 views
0

У меня есть настольный тренер. Таблица тренера есть такие данные:Как я могу обновить несколько строк в mysql?

enter image description here

Я хочу, чтобы обновить столбец player_id поэтому данные выглядит следующим образом:

enter image description here

значение Player_id с типом = «тренер» взят из значение 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

Отлично. Оно работает. благодаря –

Смежные вопросы