我在更新一个表格时遇到了问题,我确信它是非常直接的,但我在这里转了一圈又一圈。
我想更新的表'table1‘数据的格式如下:
[Month] Figure
----------------------------------
2010-05-01 00:00:00.000 1.0000
2010-06-01 00:00:00.000 1.0000
2010-07-01 00:00:00.000 1.0000
2010-08-01 00:00:00.000 1.0000包含更新图形的表'data1‘的格式如下:
[Month] Figure
----------------------------------
2010-05-01 00:00:00.000 0.7212
2010-08-01 00:00:00.000 1.2351我使用的SQL和错误消息如下所示。
UPDATE t1
SET t1.figure = (SELECT figure from data1)
FROM table1 t1 JOIN data1 d1
ON (t1.[month] = d1.[month])
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.我是否需要一个while循环来遍历每一行?
我希望最终结果如下:
[Month] Figure
----------------------------------
2010-05-01 00:00:00.000 0.7212
2010-06-01 00:00:00.000 1.0000
2010-07-01 00:00:00.000 1.0000
2010-08-01 00:00:00.000 1.2351非常感谢。
发布于 2010-08-11 21:41:57
为此,您可以使用UPDATE FROM语法。
看看here和here的语法。
来自(table_source)的
指定使用表、视图或派生表源来提供更新操作的条件
UPDATE t1
SET t1.figure = data1.figure
FROM t1
INNER JOIN data1 ON data1.month = t1.month发布于 2010-08-11 21:41:48
UPDATE t1
SET t1.figure = data1.figure
FROM table1 t1 JOIN data1 d1
ON (t1.[month] = d1.[month])发布于 2010-08-12 22:12:47
SQL Server 2008:
MERGE INTO Table1
USING data1 AS D1
ON Table1.my_Month = D1.my_Month
WHEN MATCHED
THEN UPDATE
SET Figure = D1.Figure;SQL Server 2008之前的版本:
UPDATE Table1
SET Figure = (
SELECT D1.Figure
FROM data1 AS D1
WHERE Table1.my_Month = D1.my_Month
)
WHERE EXISTS (
SELECT *
FROM data1 AS D1
WHERE Table1.my_Month = D1.my_Month
);注UPDATE..FROM语法是专有的,当目标行与多个源行匹配时,可能会产生不可预知的结果。
https://stackoverflow.com/questions/3458880
复制相似问题