0

我有 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]
    )

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

4

3 回答 3

0

您不需要子查询..只需加入表格..此处已回答了相同类型的问题。希望能帮助到你。

于 2012-06-25T11:00:42.223 回答
0

描述是独一无二的吗?

select [Description], count(*) from [MyForm] group by [Description] having count(*)>1
于 2012-06-25T10:53:32.860 回答
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;
于 2012-06-25T14:03:47.947 回答