我有两个SQL表:
matches (columns are hometeam, awayteam, id, gameweek)
teams (columns are teamcode, teamname)
matches.hometeam
和matches.awayteam
由与teams.teamcode
中的整数相对应的整数组成。我正在尝试使matches.hometeam
和matches.awayteam
更新为从teams.teamname
中相应字符串中提取的字符串。如果那不可能,那么我需要按所述创建一个新表。
我尝试了下面的代码,但是在倒数第二行上产生语法错误(错误1064(42000))。我不知道为什么。
UPDATE matches
SET matches.hometeam = teams.teamname
FROM matches
INNER JOIN teams
ON (matches.hometeam = teams.teamcode);
答案 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
,则将逻辑封装在视图中。