MySQL не позволяет мне добавлять команду FROM после команд UPDATE и SET - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь выполнить запрос, который сопоставляет строки из двух таблиц на основе нескольких условий WHERE, а затем добавляет ссылку из таблицы 2 в новый столбец таблицы 1 для этих совпадающих строк. Я запускаю

UPDATE
    maxpreps_player_stats AS mp
SET pbr_link = pbr.plink
FROM pbr_urls AS pbr
WHERE (LOWER(SUBSTRING(pbr.name, 1, 3)) = LOWER(SUBSTRING(mp.fullname, 1, 3))
    AND LOWER(SUBSTRING(pbr.name, -3)) = LOWER(SUBSTRING(mp.fullname, -3))
    AND LOWER(pbr.state) = LOWER(mp.team_state)
    AND LOWER(SUBSTRING(pbr.school, 1, 3)) = LOWER(SUBSTRING(mp.hsname, 1, 3))
    AND (pbr.class = mp.grad_lower_bound OR pbr.class = mp.grad_upper_bound));

, но выдает ошибку, что "FROM" недопустим в этой позиции, ожидая EOF, ';'

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Этот синтаксис не поддерживается в MySql. Вы можете сделать это с помощью соединения следующим образом:

UPDATE maxpreps_player_stats AS mp
INNER JOIN pbr_urls AS pbr
ON      LOWER(SUBSTRING(pbr.name, 1, 3)) = LOWER(SUBSTRING(mp.fullname, 1, 3))
    AND LOWER(SUBSTRING(pbr.name, -3)) = LOWER(SUBSTRING(mp.fullname, -3))
    AND LOWER(pbr.state) = LOWER(mp.team_state)
    AND LOWER(SUBSTRING(pbr.school, 1, 3)) = LOWER(SUBSTRING(mp.hsname, 1, 3))
    AND (pbr.class = mp.grad_lower_bound OR pbr.class = mp.grad_upper_bound)
SET mp.pbr_link = pbr.plink;
0 голосов
/ 24 апреля 2020

Пожалуйста, не используйте ОТ в запросе ОБНОВЛЕНИЯ

...