如何通过连接两个 table 来更新 table?

How to update a table by using a join of two tables?

我有一个 table 包含这些列:

Id int, Reference varchar(50), FileId int

'Reference' 列始终以 "D" 或 "C" 结尾。 FileId 需要更新。更新时我有一个 table 变量:

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

这个table变量总是最多有2条记录,至少有1条记录。 Type 列的值为 "D" 或 "C"

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

UPDATE myTable 
SET 
    FileId = f.Id
FROM
    myTable
    INNER JOIN @fileIds f ON RIGHT(s.Reference, 1) = p.[Type]

你错过了 mytable 的别名

UPDATE s 
SET 
    FileId = f.Id
FROM
    myTable s
    INNER JOIN @fileIds f ON RIGHT(s.Reference, 1) = f.[Type]

我想错过了别名,但你使用了两个不同的别名。因此,"Reference" 和 "Type" 列是属于哪些表,因为使用了其他别名。

使用连接语法更新。

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