UPDATE ... FROM ... JOIN的SQL语法错误

时间:2015-10-04 16:29:13

标签: mysql

我正在学习SQL,到目前为止已经构建了一个小数据库。现在我有两个名为<div id="bullet" style="position:absolute; top:100px; width: 15px; height:15px; background-color: #000;"></div> <svg height="200" width="200" style="position:absolute; top: 0px; left: 100px;"> <polygon points="100,10 200,200 0,200" style="fill:#23ac6a;"/> </svg>countries_visited的表,其中包含以下架构

regions_visited:[countries_visitedidcountries]

year_visited:[regions_visitedr_idregionsc_id]

month_visited中的id列是主键,countries_visited的{​​{1}}列是与c_id相关联的外键

regions_visited中的countries_visited列是新创建的,所有条目现在都是month_visited。我想要做的是将条目单独插入到具有条件的新列中。

所以,我在StackOverflow中的前面的例子中尝试了以下语句,

regions_visited

通过在MySQL服务器上运行此命令,它显示以下错误:

  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在'FROM regions_visited INNER JOIN countries_visited附近使用的语法   在Regions_visited.c_id =第1行的'coun'

但是,如果忽略语句的NULLUPDATE regions_visited SET month_visited = 9 FROM countries_visited JOIN regions_visited ON countries_visited.id = regions_visited.c_id WHERE regions_visited.regions = 'Seoul' AND countries_visited.year_visited = 2006 AND countries_visited.countries = 'South Korea'; 部分,mysql会显示我想要更新的只有1行的连接表。我做错了什么?如何使这项工作?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

在MySQL中,join子句位于set子句之前:

UPDATE regions_visited rv
JOIN   countries_visited cv ON  ON cv.id = rv.c_id
SET    month_visited = 9
WHERE  rv.regions = 'Seoul' AND 
       cv.year_visited = 2006 AND
       cv.countries = 'South Korea';

答案 1 :(得分:0)

Join之前移动SET。试试这个

UPDATE regions_visited 
       JOIN regions_visited 
         ON countries_visited.id = regions_visited.c_id 
SET    month_visited = 9 
WHERE  regions_visited.regions = 'Seoul' 
       AND countries_visited.year_visited = 2006 
       AND countries_visited.countries = 'South Korea';