MySQL不允许我在UPDATE和SET命令之后添加FROM命令

时间:2020-04-23 17:42:39

标签: mysql sql join sql-update

我正在尝试运行一个查询,该查询基于一些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 个答案:

答案 0 :(得分:1)

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;

答案 1 :(得分:0)

请不要在UPDATE查询中使用FROM