【问题标题】:MySQL is not letting me add a FROM command after my UPDATE and SET commandsMySQL 不允许我在 UPDATE 和 SET 命令之后添加 FROM 命令
【发布时间】:2020-08-07 03:47:33
【问题描述】:

我正在尝试运行一个查询,该查询根据几个 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,';'

【问题讨论】:

  • 阅读手册以了解您正在使用的语法/功能。这也是一个常见问题。在考虑发布之前进行研究。请参阅 How to Ask、其他 help center 链接和投票箭头鼠标悬停文本。

标签: mysql sql join sql-update


【解决方案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;

【讨论】:

    【解决方案2】:

    请不要在 UPDATE 查询中使用 FROM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 2013-08-18
      • 2016-06-09
      • 2015-04-17
      • 2017-03-16
      • 1970-01-01
      • 2023-04-11
      相关资源
      最近更新 更多