我正在尝试使用另一个表的数据(主键)更新表的列。创建数据库的人添加了一个“详细信息”表,所有ID都添加到了每行中,即使这些ID是相关的,因此实际上只需一个ID即可获得所有其他ID。 “详细信息”表如下所示:
RecordID int
DepartmentID int
ProjectID int
FunctionID int
TaskID int
OwnerID int
但是,“部门”表已经具有ProjectID列;表“项目”具有一个FunctionID列,依此类推。因此,在此表中仅需要OwnerID即可获得所有其他ID。其余都是多余的。
表“功能”具有需要填充的“项目ID”列。当我跑步时:
select distinct(functionid), ProjectID from Detail order by FunctionID, ProjectID;
我得到:
FunctionID ProjectID
1 5
10 9
11 1
12 1
13 8
14 10
15 8
16 8
17 1
... ...
我需要第二部分:
update functions set projectid = (select ProjectID from Detail where FunctionID=?)
我需要结束其中包含那些项目ID的“功能”表。
答案 0 :(得分:0)
SQL Server在更新语句中支持join
,因此您只需要一个内部联接:
UPDATE f
SET projectId = d.ProjectId
FROM functions As f
JOIN Detail As d
ON f.FunctionId = d.FunctionId