在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的菜鸟,请温柔,请。)
答案 0 :(得分:3)
您是否尝试将数据从“昨天”表格插入“try1”?
INSERT INTO try1(TradeDate)
SELECT MARKET_DAY FROM yesterday
--You can mention your condition, if anything specific here.
答案 1 :(得分:2)
您的上述查询将执行的操作,它将更新每一行的列值,结果相同。我想您希望将相应的MARKET_DAY值更新为相应的TradeDate列。在这种情况下,您需要将JOIN
运算符与公共column
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
答案 2 :(得分: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更新它们。
这是执行上述查询的结果: