通过连接3个表更新SQL
使用下表结构,我需要将行ID插入到已批准的表中,使用位置名称作为查找值。我该怎么做呢 我开始使用下面的代码,但没有什么作用。SQL连接不是很好,因此非常感谢您的帮助通过连接3个表更新SQL,sql,tsql,inner-join,Sql,Tsql,Inner Join,使用下表结构,我需要将行ID插入到已批准的表中,使用位置名称作为查找值。我该怎么做呢 我开始使用下面的代码,但没有什么作用。SQL连接不是很好,因此非常感谢您的帮助 UPDATE dbo.Approved SET dbo.Approved.Groupid=dbo.Lines.ID FROM dbo.Lines,dbo.Approved, dbo.Locations WHERE dbo.Approved.Location = dbo.Locations.Location_Name 批准 I
UPDATE dbo.Approved
SET dbo.Approved.Groupid=dbo.Lines.ID
FROM dbo.Lines,dbo.Approved, dbo.Locations
WHERE dbo.Approved.Location = dbo.Locations.Location_Name
批准
ID (PK) | Incident | Location | GroupID
--------------------------------------------------------
1 | Theft of luggage |Oxford Circus | Null
2 | Theft of bag |Kings Cross | Null
线条
地点
ID (PK) | Location_Name | LineID
---------------------------------
1 | Oxford Circus |1
2 | Kings Cross |2
3 | Victoria |3
这就是我给你的建议:
UPDATE t1.Approved
SET t1.Groupid = t2.ID
FROM dbo.Approved t1
INNER JOIN dbo.Locations t2 ON t1.Location = t2.Location_Name
您不需要Lines表,因为您要插入的最后只是LineID,而不是Line_名称
希望能有所帮助,一个问题:Where_Committed字段是什么?哎呀,不应该在那里。谢谢你发现它。你很好;)如果可能的话,您不需要一个表中的位置和另一个表中的位置\名称,这只是数据冗余,如果这不是数据仓库,您应该避免尝试进行更多规范化;)
UPDATE t1.Approved
SET t1.Groupid = t2.ID
FROM dbo.Approved t1
INNER JOIN dbo.Locations t2 ON t1.Location = t2.Location_Name