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

时间:2019-02-03 01:18:47

标签: sql sql-update

我有两个SQL表:

matches (columns are hometeam, awayteam, id, gameweek)
teams (columns are teamcode, teamname)

matches.hometeammatches.awayteam由与teams.teamcode中的整数相对应的整数组成。我正在尝试使matches.hometeammatches.awayteam更新为从teams.teamname中相应字符串中提取的字符串。如果那不可能,那么我需要按所述创建一个新表。

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

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

1 个答案:

答案 0 :(得分:2)

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

UPDATE matches m JOIN
       teams t
       ON m.hometeam = t.teamcode
    SET m.hometeam = t.teamname;

不过,这并没有真正的工作。你需要做的就是添加标识:

alter table matches add hometeamcode int;

然后执行:

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

编辑:

我想我误解了整个局面。您的数据模型是完全正确的。的matches表应具有整数代码,指的是在排teams

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

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;

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