导致这两个代码块之间差异的原因是什么?

时间:2016-10-20 22:14:21

标签: sql-server database

我使用两个块来寻找相同的结果,即为新创建的列分配一个关联的值。

第1组:工作

UPDATE dbo.MyTable 
SET [BorrowerAccountId]=a.Account_Id
FROM dbo.MyTable m
JOIN dbo.Account   a
ON m.AppReference=a.App_Reference

第2组:没有工作。          它返回:“子查询返回的值超过1。当子查询跟随=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。”

UPDATE dbo.MyTable  
SET [BorrowerAccountId]=(SELECT DISTINCT Account_Id 
FROM  dbo.Account a
         WHERE a.App_Reference=AppReference)

实际上,我已经检查了表dbo.Account并且知道一个App_Reference只能有一个Account_Id。所以问题似乎与表dbo.Account中的数据结构无关。 我认为这应该是条款工作机制的问题。我可能会错过一些东西 干杯

1 个答案:

答案 0 :(得分:0)

在第2块中,我认为它返回了一个包含所有Account_Id的表数据,以便在表MyTable中至少找到一次相关的App_Reference。所以它合法地包含多个价值。