我有一个包含以下列的表:
Id int, Reference varchar(50), FileId int
“参考”列始终以“ D”或“ C”结尾。 FileId
需要更新。更新时,我有一个可变的表:
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]
答案 0 :(得分:1)
我认为缺少别名,但是您使用了两个不同的别名。因此,“引用”和“类型”列是属于哪个表,因为使用其他别名。
使用连接语法进行更新。
UPDATE
A
SET
A.FileId = B.Id
FROM
tableA AS A
INNER JOIN
tableb AS B ON A.Id = B.Id
答案 1 :(得分:0)
您错过了mytable的别名
UPDATE s
SET
FileId = f.Id
FROM
myTable s
INNER JOIN @fileIds f ON RIGHT(s.Reference, 1) = f.[Type]