使用select语句作为更新查询的条件

时间:2015-08-13 15:33:50

标签: sql sql-server

我正在尝试整理一个更新表中字段的查询。我正在尝试运行一个子选择查询,该查询为我提供一个数字,然后使用该子查询产生的数字作为更新查询条件的一部分。

USE EMMS
Update  [2_import_VZW_tbl_SMTN]
    set [2_import_VZW_tbl_SMTN].[Client_ID] =[tbl_Foundation_Account].[Client_ID] 
where ([tbl_Foundation_Account].[Foundation_Account_ID] =
           (Select TOP 1  tbl_Foundation_Account.Foundation_Account_ID
            FROM tbl_Foundation_Account 
                INNER JOIN [2_Import_tbl_AWCDSU]
                  ON tbl_Foundation_Account.Foundation_Account_ID =
                    [2_Import_tbl_AWCDSU].[ECPD Profile ID]))

我的问题是我一直收到此错误

  

多部分标识符   tbl_Foundation_Account.Foundation_Account_ID“无法绑定。

我是否错误地使用了子查询?当我之前收到此错误时,这是​​因为表格或字段名称有些含糊不清,但这次我检查了所有这些并且应该没问题。谁能解释我犯下的SQL罪?

2 个答案:

答案 0 :(得分:1)

关于错误

  

多部分标识符   tbl_Foundation_Account.Foundation_Account_ID"无法受约束。

这是因为外部[tbl_Foundation_Account].[Client_ID]查询范围内的表列UPDATE不存在。 外部查询唯一的表格是[2_import_VZW_tbl_SMTN],它没有像[tbl_Foundation_Account].[Client_ID]这样的列。 它类似于用拼写错误写一个列名或者像你说的那样

  

如果我之前收到此错误,那是因为有些错误   表格或字段名称中的歧义

请尝试如下查询。 请注意,我使用内部查询语法并确保使用

返回单个值
    select top 1 [Client_ID]  

在内部查询中。其余的查询语法是相同的。

USE EMMS

Update  [2_import_VZW_tbl_SMTN]
set [2_import_VZW_tbl_SMTN].[Client_ID] =
                    (   
                        select top 1 [Client_ID]  
                            from [tbl_Foundation_Account] 
                        where [Foundation_Account_ID] =
                           (
                           Select TOP 1  a.Foundation_Account_ID
                                FROM tbl_Foundation_Account a
                            INNER JOIN [2_Import_tbl_AWCDSU] b
                                  ON a.Foundation_Account_ID = b.[ECPD Profile ID]
                           )
                    )

答案 1 :(得分:0)

另一张海报早些时候提交了这个答案,但后来删除了它。我能够在删除它之前尝试它,它完全符合我需要它的工作方式。我会用这个作为正确的答案,除非别人能告诉我为什么这是一个坏主意。

{{1}}