2

私は意図したとおりに動作する次のSQLを持っています:

UPDATE Zones 
SET Zones.Zone = (SELECT Zone FROM Zones_New WHERE Zones_New.ZONENO = ZONES.ZONENO)

ただし、これによりテーブルが更新されZones、フィールドがテーブル内ZoneZone名前に設定Zones_Newされ、これと一致しますZoneNo

同時に、まったく同じことをしたいのですが、NameフィールドをZoneテーブルの名前に設定しますZones_New

だから基本的に私はテーブルからの値が何であるかを設定していZoneますNameZoneZones_New

SQLがわからないので、助けていただければ幸いです:)

4

4 に答える 4

3
UPDATE Zones
SET Zones.Zone = Zones_New.Zone,
    Zones.Name = Zones_New.Name
FROM Zones
INNER JOIN Zones_New ON Zones.ZONENO = Zones_New.ZONENO

一致しない行に意図的にnullを設定する場合は、代わりにLEFTJOINを使用できます。

于 2013-01-04T09:15:36.820 に答える
0

次のように、サブクエリを2回実行できます。

UPDATE Zones 
 SET Zones.Zone = (SELECT Zone 
                   FROM Zones_New 
                   WHERE Zones_New.ZONENO = ZONES.ZONENO),
     Zones.Name = (SELECT Zone 
                   FROM Zones_New 
                   WHERE Zones_New.ZONENO = ZONES.ZONENO)

またはあなたは参加でそれを行うことができます

UPDATE Zones 
 SET Zones.Zone = Zones_New.Zone
     Zones.Name = Zones_New.Zone
FROM Zones
  LEFT OUTER JOIN Zones_New 
    ON Zones_New.ZONENO = ZONES.ZONENO

null対応するレコードがテーブルに見つからない場合、このクエリは両方ともデータになりZones_Newます。

于 2013-01-04T09:14:21.473 に答える
0

最も単純なのは...

UPDATE Zones 
SET Zones.Zone = (SELECT Zone FROM Zones_New WHERE Zones_New.ZONENO = ZONES.ZONENO),
    Zones.Name = (SELECT Zone FROM Zones_New WHERE Zones_New.ZONENO = ZONES.ZONENO)

より複雑なものは次のようなものである可能性があります...

UPDATE Z
SET Zones.Zone = ZN.Zone
FROM Zones Z
  LEFT JOIN Zones_New ZN
    ON Z.ZONENO = ZN.ZONENO
于 2013-01-04T09:14:30.227 に答える
0
UPDATE Zones
SET Zones.Zone = Zones_New.Zone,
    Zones.Name = Zones_New.Name
FROM Zones, Zones_New
WHERE Zones.ZONENO = Zones_New.ZONENO
于 2013-01-04T09:17:33.327 に答える