SQL-从另一个表更新表-语法错误

SQL-从另一个表更新表-语法错误,sql,sql-update,Sql,Sql Update,我有两个SQL表: matches (columns are hometeam, awayteam, id, gameweek) teams (columns are teamcode, teamname) 匹配。hometeam和匹配。awayteam由与团队中的整数相对应的整数组成。teamcode。我正在尝试获取匹配项.hometeam和匹配项.awayteam以更新到从团队.teamname中的相应字符串中提取的字符串。如果这是不可能的,那么我需要创建一个新表,如下所述 我尝试了下面的

我有两个SQL表:

matches (columns are hometeam, awayteam, id, gameweek)
teams (columns are teamcode, teamname)
匹配。hometeam
匹配。awayteam
由与
团队中的整数相对应的整数组成。teamcode
。我正在尝试获取
匹配项.hometeam
匹配项.awayteam
以更新到从
团队.teamname
中的相应字符串中提取的字符串。如果这是不可能的,那么我需要创建一个新表,如下所述

我尝试了下面的代码,但它在倒数第二行产生了语法错误(错误1064(42000))。我不明白为什么

UPDATE matches
SET matches.hometeam = teams.teamname
FROM matches
INNER JOIN teams
ON (matches.hometeam = teams.teamcode);

错误1064是一个MySQL错误。如果您使用的是MySQL,正确的语法是:

UPDATE matches m JOIN
       teams t
       ON m.hometeam = t.teamcode
    SET m.hometeam = t.teamname;
然而,这不会真正起作用。您需要做的是添加ID:

alter table matches add hometeamcode int;
然后做:

UPDATE matches m JOIN
       teams t
       ON m.hometeam = t.teamcode
    SET m.hometeamcode = t.teamname;
编辑:

我想我误解了整个情况。您的数据模型完全正确。
匹配项
表应包含整数代码,参考
团队中的行

您只需编写查询即可获得名称:

select m.*, th.teamname as hometeamname, ta.teamname as awayteamname
from matches m join
     team th
     on m.hometeam = th.teamcode join
     team ta
     on a.hometeam = ta.teamcode;

如果您不想执行
连接
,则将逻辑封装在视图中。

错误1064是一个MySQL错误。如果您使用的是MySQL,正确的语法是:

UPDATE matches m JOIN
       teams t
       ON m.hometeam = t.teamcode
    SET m.hometeam = t.teamname;
然而,这不会真正起作用。您需要做的是添加ID:

alter table matches add hometeamcode int;
然后做:

UPDATE matches m JOIN
       teams t
       ON m.hometeam = t.teamcode
    SET m.hometeamcode = t.teamname;
编辑:

我想我误解了整个情况。您的数据模型完全正确。
匹配项
表应包含整数代码,参考
团队中的行

您只需编写查询即可获得名称:

select m.*, th.teamname as hometeamname, ta.teamname as awayteamname
from matches m join
     team th
     on m.hometeam = th.teamcode join
     team ta
     on a.hometeam = ta.teamcode;

如果您不想执行
连接
,请将逻辑封装在视图中。

matches.hometeam…由整数组成”,“尝试获取matches.hometeam…更新为字符串”-您不能将字符串放入整数列中您有外键或主键吗?您是否关心流程结束时的列名称?你确定你应该做你想做的事情吗?“matches.hometeam…由整数组成”,“尝试获取匹配项。hometeam…更新为字符串”-你不能将字符串放入整数列你有外键或主键吗?您是否关心流程结束时的列名称?你确定你应该做你想做的事情吗?这显示了正确的方法:添加一个具有正确类型的新列,然后设置它的值。新列的名称选择可能是错误的;应该是
hometeam\u name
,对吗?对客场球队进行冲洗和重复。这显示了正确的方法:添加一个具有正确类型的新列,然后设置其值。新列的名称选择可能是错误的;应该是
hometeam\u name
,对吗?为客场球队清洗并重复。