Sql 如何使用两个表的联接来更新表?

Sql 如何使用两个表的联接来更新表?,sql,sql-server,sql-server-2017,Sql,Sql Server,Sql Server 2017,我有一个包含以下列的表: Id int, Reference varchar(50), FileId int “参考”列始终以“D”或“C”结尾。需要更新文件ID。更新时,我有一个表变量: DECLARE @fileIds TABLE ( Id int NOT NULL, [Type] varchar(1) NOT NULL ); 此表变量始终最多有2条记录,至少有1条记录。类型列的值为“D”或“C” 现在我需要通过设置文件id来更新我的表,以匹配相应的文件id。这是进行更新的正确方

我有一个包含以下列的表:

Id int, Reference varchar(50), FileId int
“参考”列始终以“D”或“C”结尾。需要更新
文件ID
。更新时,我有一个表变量:

DECLARE @fileIds TABLE (
  Id int NOT NULL,
  [Type] varchar(1) NOT NULL
);
此表变量始终最多有2条记录,至少有1条记录。
类型
列的值为“D”或“C”

现在我需要通过设置
文件id
来更新我的表,以匹配相应的文件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

你的方法很好。