如何基于3个其他表更新MySQL表

时间:2013-08-23 14:20:25

标签: mysql sql

我有以下四个MySQL表

Region
RegionId

City
CityId
RegionId

Hotel
HotelId
CityId

HotelRegion
HotelId
RegionId

我正在努力编写UPDATE语句,以便从HotelRegion表中的数据更新City表的RegionId字段。

基本上我如何使用正确的RegionId更新City表,其中HotelRegion表中的HotelId与City表的CityId匹配。

这是我目前的UPDATE声明

UPDATE City c
SET c.RegionId = 
(SELECT DISTINCT(HotelRegion.RegionId) FROM HotelRegion 
INNER JOIN Hotel ON Hotel.HotelID = HotelRegion.HotelID
INNER JOIN City ON City.CityId = Hotel.CityId
WHERE City.CityId = 1233)
WHERE c.CityId = 1233

我得到的错误消息是您无法在FROM子句中为更新指定目标表'c'。 如果您需要更多信息来帮助回答我的问题,请告诉我

1 个答案:

答案 0 :(得分:0)

在必须测试之后,我设法让以下更新查询正常工作

UPDATE City
INNER JOIN Hotel ON City.CityId = Hotel.CityId
INNER JOIN HotelRegion ON Hotel.HotelId = HotelRegion.HotelId
SET City.RegionId = HotelRegion.RegionId
WHERE City.CityId = 1223
AND Hotel.CityId = 1223