2013-04-07 56 views
0

在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,請溫柔一些)

+0

條件是什麼? 'dbo.try1'中有多少行,'dbo.yesterday'中有多少行?你可以給我們一個例子,你如何從'dbo.yesterday'更新'dbo.try1'中的數據。 – outcoldman 2013-04-07 19:08:55

+0

'dbo.try1'在它的'TradeDate'列中沒有數據。我試圖將數據從'dbo.yesterday'的'MARKET_DAY'列複製到'dbo.try1'的'TradeDate'列。這可能是糟糕的數據庫設計,但對於手頭的任務來說是必要的。 – user1067257 2013-04-07 19:10:27

回答

3

你試圖插入來自「昨天」數據表「try1」?

INSERT INTO try1(TradeDate) 
SELECT MARKET_DAY FROM yesterday 
--You can mention your condition, if anything specific here. 
+0

我們有一個贏家!完美的作品。出於好奇,你知道爲什麼'UPDATE'語法不起作用嗎? – user1067257 2013-04-07 19:19:31

+1

UPDATE用於「更新」現有行。例如:如果您有TradeDate數據X,並且您想使用「昨天」Y的值更新其值,那麼您可以使用UPDATE SET tradedate = marketday,其中tradedate = X且marketday = Y – Vishy 2013-04-07 19:20:30

+0

現在我知道了。說得通。非常感謝! – user1067257 2013-04-07 19:24:27

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 
+0

即使使用連接語法...... – user1067257 2013-04-07 19:16:13

+0

仍然得到'(0行受影響)'您在哪個列上指定了'Inner join'? – Sachin 2013-04-07 19:20:45

+0

我認爲你的問題與更新專欄有關。如果是插入的情況,而不是你在問題中指定的原因? – Sachin 2013-04-07 19:22:54

1

,這將是真正的幫助,如果你能告訴我們你的表的設計,但到目前爲止,這是我的猜想:

你要更新必須共同之處否則更新榮獲」實體工作正常!

這裏是一個例子:

dbo.try1

enter image description here

dbo.yesterday

enter image description here

和這裏是查詢:

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更新它們。

這裏是執行上面的查詢結果:

enter image description here

+0

他希望我們爲它工作 – 2013-04-07 19:35:18

相關問題