【发布时间】:2012-06-01 08:35:23
【问题描述】:
我在发布此问题之前尝试搜索,但找不到另一个示例。
我很痛苦地意识到 SQL 目前是我的致命弱点,并且正在努力解决它,所以请多多包涵!
我的悲惨故事涉及 3 张桌子:
tableA:有我想更新的列(estId)
tableB:包含建立详细信息,包括名称(estName)
tableC:包含要导入的机构数据,包括机构名称(estName)和关联的机构ID(estCode)
在伪语言中,我希望实现的是:
Update tableA
Set estId = tableC.estCode
Where tableC.estName = tableB.estName
我试过这个:
UPDATE tableA
SET estId = tableC.estCode
FROM
tableC
JOIN tableB
ON tableC.estName = tableB.estName
那失败了。或者更确切地说,它更新了 estId 列,但每一行都包含 tableC 中的第一个值。
我可能遗漏了一些明显的东西......
谁能帮忙?
【问题讨论】:
-
您需要在
from子句中将TableA 加入到其他表中。我没有从上面的信息中看到连接。所以,update TableA set estId = tableC.estCode from TableA inner join TableB on ... inner join TableC ... -
您需要一个条件来加入 tableA - 否则数据库引擎不知道如何更新列。 tableA 中还有哪些其他列对应于 tableB 或 tableC 中的列?
-
开始:您当前的加入/更新在 tableA 上没有任何条件。您希望 tableB/tableC 中的行与 tableA 中要更新的行之间如何匹配?
-
谢谢大家 - 我知道这将是相当明显的事情。在尝试上述方法之前,我尝试了一个 SELECT 查询以查看它是否返回了我想要的结果。这里的问题是我缺乏知识 - 我根本不知道如何使用 JOIN 正确构建 UPDATE
-
澄清一下:问题解决了吗?
标签: sql-server-2008 sql-update