我有两个表(带有示例数据):
tblZone
[ZoneNo] [Zone]
-----1------Zone1
-----2------Zone2
-----3------Zone3
tblPointsClient
[PolygonID] [Zone Name]
-----0------------Zone1
-----0------------Zone1
-----0------------Zone1
-----0------------Zone2
-----0------------Zone2
-----0------------Zone2
-----0------------Zone3
-----0------------Zone3
-----0------------Zone3
基本上,使用MySQL,我试图更新tblPointsClient中的PolygonID,因为ZoneNo用于tblZone中的区域(如果有意义的话)。
因此,当我运行此更新时,它应该将PolygonID更改为:
[PolygonID] [Zone Name]
-----1------------Zone1
-----1------------Zone1
-----1------------Zone1
-----2------------Zone2
-----2------------Zone2
-----2------------Zone2
-----3------------Zone3
-----3------------Zone3
-----3------------Zone3
我尝试了以下内容:
UPDATE tblPointsClient
SET tblPointsClient.PolygonID = (
SELECT ZoneNo FROM tblZones WHERE tblPointsClient.ZoneNo = tblZones.Zone
)
但这使得所有PolygonID的0
如果有人可以提供帮助,那将非常感激! :)
答案 0 :(得分:3)
UPDATE tblPointsClient a
INNER JOIN tblZone b
ON a.`Zone Name` = b.Zone
SET a.PolygonID = b.ZoneNo
要获得更快的效果,请在表INDEX
上的Zone Name
列和tblPointsClient
上的Zone
上添加tblZone
。
更新1
答案 1 :(得分:2)
您可以使用子查询来实现此目标:
UPDATE tblPointsClient
SET PolygonID = (SELECT TOP 1 ZoneNo FROM tblZone WHERE Zone = [Zone Name])
WHERE PolygonID = 0
我创建了仅使用PolygonID = 0