如何使用两个表的连接更新表?

问题描述 投票:0回答:2

我有一个包含这些列的表:

Id int, Reference varchar(50), FileId int

“参考”列始终以“D”或“C”结尾。 FileId需要更新。在更新时,我有一个表varilable:

DECLARE @fileIds TABLE (
  Id int NOT NULL,
  [Type] varchar(1) NOT NULL
);

此表变量始终最多包含2条记录和至少1条记录。 Type列的值为“D”或“C”

现在我需要通过设置FileId来匹配相应的文件ID来更新我的表。这是进行更新的正确方法:

UPDATE myTable 
SET 
    FileId = f.Id
FROM
    myTable
    INNER JOIN @fileIds f ON RIGHT(s.Reference, 1) = p.[Type]
sql sql-server sql-server-2017
2个回答
1
投票

我想错过别名,但你使用了两个不同的别名。因此,“引用”和“类型”列是属于哪些表,因为使用其他别名。

使用连接语法更新。

UPDATE
    A
SET 
    A.FileId = B.Id
FROM 
    tableA AS A
INNER JOIN 
    tableb AS B ON A.Id = B.Id

0
投票

你错过了mytable的别名

UPDATE s 
SET 
    FileId = f.Id
FROM
    myTable s
    INNER JOIN @fileIds f ON RIGHT(s.Reference, 1) = f.[Type]
© www.soinside.com 2019 - 2024. All rights reserved.