2015-10-04 4 views
-2

Я изучаю SQL и до сих пор создавал небольшую базу данных. Теперь у меня есть 2 таблицы, называемые countries_visited и regions_visited со следующей схемой,Ошибка синтаксиса SQL с UPDATE ... FROM ... JOIN

countries_visited: [id, countries, year_visited]

regions_visited: [r_id, regions, c_id, month_visited]

id столбцов countries_visited является первичным ключом, а столбец c_idregions_visited является внешним ключом, связанным с countries_visited

Столбец month_visited в regions_visited вновь создан, и все записи в настоящее время NULL. То, что я хочу сделать, - это индивидуально вставить запись в этот новый столбец с условиями.

Итак, я попробовал следующее заявление извлекая из предыдущих примеров здесь, в StackOverflow,

UPDATE 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, он показывает эту ошибку:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM regions_visited INNER JOIN countries_visited ON regions_visited.c_id = coun' at line 1

Однако, если пренебрегая частью инструкции UPDATE и SET, mysql показывает объединенную таблицу с только 1 строкой, которую я хотел бы обновить. Что я сделал не так? Как это сделать?

Спасибо заранее!

+0

MySQL UPDATE не поддерживает «FROM» - см https://dev.mysql.com/doc/refman/5.0/en/update.html – Leo

ответ

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'; 
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'; 
+0

Интересно, как многие другие страны регионы называют " Сеул? – Strawberry

Смежные вопросы