基于另一个表的SQL Server更新失败?
在SQL Server 2012中,我试图设置我的“TradeDate”列的值等于我的“MARKET_DAY”列的值。这里是我当前的代码:基于另一个表的SQL Server更新失败?
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中的noob,请温柔一些)
你试图插入来自“昨天”数据表“try1”?
INSERT INTO try1(TradeDate)
SELECT MARKET_DAY FROM yesterday
--You can mention your condition, if anything specific here.
我们有一个赢家!完美的作品。出于好奇,你知道为什么'UPDATE'语法不起作用吗? – user1067257 2013-04-07 19:19:31
UPDATE用于“更新”现有行。例如:如果您有TradeDate数据X,并且您想使用“昨天”Y的值更新其值,那么您可以使用UPDATE SET tradedate = marketday,其中tradedate = X且marketday = Y – Vishy 2013-04-07 19:20:30
现在我知道了。说得通。非常感谢! – user1067257 2013-04-07 19:24:27
你上面的查询会做什么,它会以相同的结果更新每一行的列值。我认为您希望将相应的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
即使使用连接语法...... – user1067257 2013-04-07 19:16:13
仍然得到'(0行受影响)'您在哪个列上指定了'Inner join'? – Sachin 2013-04-07 19:20:45
我认为你的问题与更新专栏有关。如果是插入的情况,而不是你在问题中指定的原因? – Sachin 2013-04-07 19:22:54
,这将是真正的帮助,如果你能告诉我们你的表的设计,但到目前为止,这是我的猜想:
你要更新必须共同之处否则更新荣获”实体工作正常!
这里是一个例子:
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-07 19:35:18
条件是什么? 'dbo.try1'中有多少行,'dbo.yesterday'中有多少行?你可以给我们一个例子,你如何从'dbo.yesterday'更新'dbo.try1'中的数据。 – outcoldman 2013-04-07 19:08:55
'dbo.try1'在它的'TradeDate'列中没有数据。我试图将数据从'dbo.yesterday'的'MARKET_DAY'列复制到'dbo.try1'的'TradeDate'列。这可能是糟糕的数据库设计,但对于手头的任务来说是必要的。 – user1067257 2013-04-07 19:10:27