使用日期匹配的select语句中的多个值更新表

Ice*_*ols 3 sql sql-server join sql-update

我在更新桌子时遇到了问题,我确信它很直接,但我在这里绕圈转.

我要更新的表'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
Run Code Online (Sandbox Code Playgroud)

包含更新数字的表'data1'格式如下:

[Month]                    Figure
----------------------------------
2010-05-01 00:00:00.000 0.7212
2010-08-01 00:00:00.000 1.2351
Run Code Online (Sandbox Code Playgroud)

我正在使用的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.
Run Code Online (Sandbox Code Playgroud)

我需要一个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
Run Code Online (Sandbox Code Playgroud)

非常感激.

Lie*_*ers 5

您可以使用此UPDATE FROM语法.

看看这里 和这里的语法.

FROM(table_source)

指定使用表,视图或派生表源来提供更新操作的条件

UPDATE  t1
SET     t1.figure = data1.figure
FROM    t1
        INNER JOIN data1 ON data1.month = t1.month
Run Code Online (Sandbox Code Playgroud)

  • @Leniel Macaferi-现在这是我第一次在博客中被提及。我将把它打印并放在我的床上:) (2认同)