在SQL中将值从一个表复制到另一个表

时间:2012-06-25 10:44:56

标签: sql-server-2005

我有2张桌子。我需要使用表2中特定列中的值更新表1的所有行。它们具有相同的结构。

UPDATE @TempTable       
SET [MyColumn] =
    (
    SELECT [MyColumn]
    FROM 
        [udf_AggregateIDs] (@YearId) AS [af]
        INNER JOIN [MyForm] ON
        (
            [af].[FormID] = [MyForm].[FormID] AND
            [af].[FormID] = @MyFormId
        )
    WHERE [Description] = [MyForm].[Description]
    )

我收到一条错误消息,说Subquery返回的值超过1。我只添加了where子句,因为我认为sql正在努力匹配行,但两个表都有相同的行。 它应该返回多个值,因为我试图将MyColumn的所有行从一个表复制到另一个表。 想法?

3 个答案:

答案 0 :(得分:0)

描述唯一吗?

select [Description], count(*) from [MyForm] group by [Description] having count(*)>1

答案 1 :(得分:0)

您不需要子查询..只需加入表.. 已回答相同类型的问题here。希望它有所帮助。

答案 2 :(得分:0)

这里必须猜测,因为您的查询不是自我记录的。 MyColumn是否来自该功能? @TempTable是否有描述列?谁知道,因为你没有用别名作为前缀?试试这个。您可能需要进行调整,因为您知道自己的架构而我们没有。

UPDATE t 
  SET [MyColumn] = func.MyColumn -- have to guess here
  FROM dbo.[udf_AggregateIDs] (@YearId) AS func
  INNER JOIN dbo.MyForm AS f
  ON func.FormID = f.FormID
  INNER JOIN @TempTable AS t
  ON t.Description = f.Description -- guessing here also
WHERE f.FormID = @MyFormID;