我查看了其他答案,但他们都没有回答我做错了什么或者我没有得到它。
我正在尝试从另一个表格更新表格,但他们不会共享一个共同的引用。第三个表与两个表共享一个引用,因此如何让它们相互引用以进行更新。这是我最好的尝试。
Update jobs
Set Phone = (Select coalesce([Work Phone], [Home Phone], [Cell Phone])
from Contacts c
INNER JOIN Easement_Contacts e on c.CPID = e.Contact_ID)
Where Exists (Select Contact_ID
from Easement_Contacts e
INNER JOIN Jobs j on j.Easement = e.Easement_ID)
答案 0 :(得分:4)
我认为你在寻找的是:
UPDATE j
SET Phone = coalesce(c.[Work Phone], c.[Home Phone], c.[Cell Phone])
FROM jobs j
JOIN Easement_Contacts e on j.Easement = e.Easement_ID
JOIN Contacts c on e.Contact_ID = c.CPID
我假设所有3个电话号码都来自您示例中的联系人表格。您尝试使用的相关子查询未锚定到“jobs”表,因为它不包含引用子查询范围之外的对象的join或where子句。通过引用要在FROM子句中更新的表,可以使用“jobs”别名作为顶部UPDATE语句的主题来连接所有表并设置UPDATE语句的上下文。
答案 1 :(得分:0)
不知道你的桌子结构有点像在魔术玻璃灯泡里读书。这个问题可能是可更新CTE 的一个很好的例子。但请注意,使用 m:n-relation 时,相同的行可能会使用相当随机的值进行更新...
我建议先将CTE的SELECT
隔离出来(添加控制输出所需的列,然后检查NewPhone
是否位于{{1}旁边1}},应该更新。
最后你运行这样的查询:
Phone