【问题标题】:Update column in table with data from another column using Join使用 Join 使用另一列中的数据更新表中的列
【发布时间】:2021-03-22 13:09:45
【问题描述】:

我正在尝试使用 SQL 中的连接语句将数据从一列更新到另一列。

我的两张表是名册和分数。他们共享playerid。 我正在尝试将 score.opp 中的数据添加到 rosters.opp。

不知道我做错了什么。当我执行下面的选择语句时,我能够看到共享的 playerid、名册中的一个空列以及分数中包含我要添加到名册中的数据的列。

SELECT a.playerid, a.opp, b.opp 
FROM rosters a 
JOIN scores b ON a.playerid = b.playerid

当我继续进行更新时,我收到一个错误。这是我的更新语句的样子:

UPDATE a
SET a.opp = b.opp
FROM rosters a
JOIN scores b ON a.playerid = b.playerid

我收到一条错误消息:“#1064 - 您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,了解在 'FROM rosters a 附近使用的正确语法 在第 3 行加入分数 b ON a.playerid = b.playerid'"

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: sql join sql-update


    【解决方案1】:

    您可以使用标准sql updateexists,如下所示:

    UPDATE ROSTERS A
       SET A.OPP = (
            SELECT B.OPP FROM SCORES B
             WHERE A.PLAYERID = B.PLAYERID)
     WHERE EXISTS (
        SELECT 1 FROM SCORES B
         WHERE A.PLAYERID = B.PLAYERID)
    

    请确保SCORES 表中只有一条记录匹配PLAYERID。如果SCORES 表中有多个记录可用于单个PLAYERID,那么您需要在SELECT 子查询中使用聚合函数MAXCOUNT 等(如SELECT COUNT(B.OPP) FROM SCORES B - - 或MAX)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多