4

私は2つのテーブルを持っています(サンプルデータ付き):

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 を使用して、tblZone のゾーンの ZoneNo によって tblPointsClient の PolygonID を更新しようとしています (それが理にかなっている場合)。

したがって、この更新を実行すると、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

誰かが助けてくれれば、それは大歓迎です!:)

4

2 に答える 2

3
UPDATE  tblPointsClient a
        INNER JOIN tblZone b
            ON a.`Zone Name` = b.Zone
SET     a.PolygonID = b.ZoneNo

INDEXパフォーマンスを高速化するには、 on 列Zone Nameを tabletblPointsClientおよびZoneon tableに追加しますtblZone

更新 1

于 2013-02-14T14:00:45.967 に答える
2

サブクエリを使用して、この目標を達成できます。

UPDATE tblPointsClient 
SET PolygonID = (SELECT TOP 1 ZoneNo FROM tblZone WHERE Zone = [Zone Name])
WHERE PolygonID = 0

行のみを更新するコードを作成しましたPolygonID = 0

于 2013-02-14T14:07:27.940 に答える