SQL-从另一个表更新表-语法错误
我有两个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中的相应字符串中提取的字符串。如果这是不可能的,那么我需要创建一个新表,如下所述 我尝试了下面的
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
,对吗?为客场球队清洗并重复。