1

我有以下四个 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”进行更新。如果您需要更多信息来帮助回答我的问题,请告诉我

4

1 回答 1

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
于 2013-08-24T10:03:12.623 回答