【问题标题】:Update SQL by joining 3 tables通过加入 3 个表来更新 SQL
【发布时间】:2011-05-23 12:57:39
【问题描述】:

使用下面的表结构,我需要将 Line 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

批准

ID (PK) | Incident             | Location     | GroupID
--------------------------------------------------------
1       | Theft of luggage     |Oxford Circus | Null
2       | Theft of bag         |Kings Cross   | Null

线条

ID (PK) | Line_Name      | 
--------------------------
1       | Central        |
2       | Northern       |
3       | Circle         |

地点

ID (PK) | Location_Name  | LineID
---------------------------------
1       | Oxford Circus  |1
2       | Kings Cross    |2
3       | Victoria       |3

【问题讨论】:

  • 一个问题:Where_Committed 字段是什么?
  • 糟糕,那不应该在那里。感谢您发现它。

标签: sql tsql inner-join


【解决方案1】:

这就是我的建议:

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_Name。

希望对你有帮助,

【讨论】:

  • 不客气 ;) 如果我可能您不需要一张表中的 Location 和另一张表中的 Location_Name,那只是数据冗余,如果这不是数据仓库,您应该避免尝试规范化更多;)
猜你喜欢
  • 2018-02-07
  • 2019-01-01
  • 2017-10-27
  • 2012-10-18
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多