0

在 SQL Server 2012 中,我试图将“TradeDate”列的值设置为“MARKET_DAY”列的值。这是我当前的代码:

USE Sales
GO
update dbo.try1
SET dbo.try1.TradeDate = dbo.yesterday.MARKET_DAY
FROM dbo.try1, dbo.yesterday

但是,当我运行它时,我得到:

(0 row(s) affected)

同时我不知道为什么。任何帮助是极大的赞赏。(我是 T-SQL 的菜鸟,请温柔一点。)

4

3 回答 3

3

您是否尝试将“昨天”表中的数据插入“try1”?

INSERT INTO try1(TradeDate)
SELECT MARKET_DAY FROM yesterday
--You can mention your condition, if anything specific here.
于 2013-04-07T19:12:49.073 回答
2

您的上述查询将执行什么操作,它将使用相同的结果更新每一行的列值。我认为您希望将相应的 MARKET_DAY 值更新为相应的 TradeDate 列。在这种情况下,您需要将JOIN运算符与 commoncolumn

USE Sales
GO
update dbo.try1
SET dbo.try1.TradeDate = dbo.yesterday.MARKET_DAY
FROM dbo.try1 INNER JOIN dbo.yesterday
ON dbo.try1.columnName=dbo.yesterday.columnName
于 2013-04-07T19:09:09.067 回答
1

如果您可以向我们展示您的表格设计,那将非常有帮助,但到目前为止,这就是我的猜测:

您尝试更新的实体必须是共同的,否则更新将无法正常工作!

这是一个例子:

dbo.try1

在此处输入图像描述

dbo.yesterday

在此处输入图像描述

这是查询:

USE DBTest
GO
update dbo.try1
SET dbo.try1.TradeDate = dbo.yesterday.MARKET_DAY
FROM dbo.try1 INNER JOIN dbo.yesterday
ON dbo.try1.id=dbo.yesterday.id

在这种情况下,两个表中的实体都有一个共同的 id,所以我能够根据它们的 id 更新它们。

这是执行上述查询的结果:

在此处输入图像描述

于 2013-04-07T19:32:30.107 回答