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
你的方法很好。