我有一些下表,其中OrigMachine.ID
和OrigKeys.Id
相同。
OrigMachine: ID, Name
OrigKeys :ID, Key
BackupMachine : ID,Name
BackupKeys : ID, Key
例如,我的OrigMachine
表如下所示。
ID, Name
1, Alfa
2, Beta
我的BackupMachine
表如下所示。
ID, Name
1, Beta
2, Gamma
我的OrigKeys
表如下所示。
ID, Name
1, AlfaParticle
2, Beta1particle
我的backupKeys
表如下所示。
ID, Name
1, BetaParticle
2, GammaParticle
更新后,预期的OrigKeys
表如下所示。
ID, Name
1, AlfaParticle
2, BetaParticle
需要基于OrigMachine.Name = BackupMachine.Name用BackupKeys.Key更新OrigKeys.Key
这是我想出的,但似乎没有用。
UPDATE [DB].[dbo].[OrigKeys]
SET [DB].[dbo].[OrigKeys].[Key] = [TS2].[Key]
FROM [DB].[dbo].[BackupMachine] AS TM2
INNER JOIN [DB].[dbo].[BackupKeys] TS2 ON [TS2].[Id] = [TM2].[Id]
INNER JOIN [DB].[dbo].[OrigMachine] TM1 ON [TM1].[Name] = [TM2].[Name]
WHERE [TM1].[Name] = [TM2].[Name];
我想念什么?
答案 0 :(得分:0)
您可以尝试以下操作-在为表名定义别名后,您需要在更新时指定别名。
UPDATE TM1
SET TM1.[Key] = TS2.[Key]
FROM [DB].[dbo].[BackupMachine] AS TM2
INNER JOIN [DB].[dbo].[BackupKeys] TS2 ON TS2.[Id] = TM2.[Id]
INNER JOIN [DB].[dbo].[OrigMachine] TM1 ON TM1.[Name] = TM2.[Name]
答案 1 :(得分:0)
尝试一下:
UPDATE Org
SET Org.[Key] = TM2.[Key]
FROM [DB].[dbo].[BackupMachine] AS TM2
INNER JOIN [DB].[dbo].[BackupKeys] TS2 ON [TS2].[Id] = [TM2].[Id]
INNER JOIN [DB].[dbo].[OrigMachine] TM1 ON [TM1].[Name] = [TM2].[Name]
INNER JOIN [DB].[dbo].[OrigKeys] AS Org ON Org.ID = TM1.ID;
答案 2 :(得分:0)
FROM列表中缺少要更新的表。请将该表添加到列表中,并与其他任何表的关系键建立关系。
UPDATE A
SET A.[Key] = [TS2].[Key]
FROM
[DB].[dbo].[OrigKeys] A
-- You need to add the table you wants to update
-- in the FROM List. Please establish a relation
-- between A and other table now
-- like ON A.[...] = Other tables column ref
INNER JOIN [DB].[dbo].[BackupMachine] AS TM2 --May be here like ON ...
INNER JOIN [DB].[dbo].[BackupKeys] TS2 ON [TS2].[Id] = [TM2].[Id]
INNER JOIN [DB].[dbo].[OrigMachine] TM1 ON [TM1].[Name] = [TM2].[Name]
WHERE [TM1].[Name] = [TM2].[Name];