2012-10-11 75 views
9

我試圖從相同的表數據更新相同的表數據。更新SQL Server中的同一個表

我的SP如下圖所示:

UPDATE T1 
SET T1.Name = T2.Name 
    , T1.Age = T2.Age 
    , T1.Subject = T2.Subject 
FROM Student T1 
    , Student T2 
WHERE T1.StudentID = @OldID 
    AND T2.StudentID = @NewID 

當我執行這個查詢,沒有錯誤。但更新不起作用。

[這裏沒有共同的列值比較喜歡T1.StudentID = T2.StudentID]

+4

「@ OldID」和「@ NewID」是否相同? – Oded

+1

你的查詢應該工作(http://sqlfiddle.com/#!3/d7728/13)。 @Oded建議,也許'@ OldID'和'@ NewID'是相同的。 –

+0

是的,它們是相同的。 Studentid是唯一標識符。 –

回答

5

試試這個:

UPDATE t1 
SET t1.name = t2.name, t1.age = t2.age, t1.subject = t2.subject 
FROM student t1 
INNER JOIN 
student t2 
ON t1.StudentID = @oldID 
AND t2.StudentID = @NewID 

完整的例子是here

+0

這可以用來從一個源行更新多行嗎? – isapir

+0

我發佈了一個後續問題,如果你看一看,會很棒。謝謝! http://stackoverflow.com/questions/33949195/copy-data-to-existing-rows-within-same-table-in-sql-server – isapir

0

嘗試通過做存儲過程,聲明一些變量,將新值加載到這些變量,然後更新您的表。

應該是這個樣子的是:

CREATE PROCEDURE dbo.StoredProcedure2 

    @OldID int, 
    @NewID int 

AS 

declare @Name text, @Age int, @Subject text 

begin 

select @Name = T1.Name, @Age = T1.Age, @Subject= T1.Subject 
from Student T1 
Where T1.StudentID = @OldID 

end 

begin 

UPDATE T1 SET T1.Name = @Name, T1.Age = @Age, T1.Subject = @Subject 
FROM Student T1 
WHERE T1.StudentID = @OldID 

end 
    RETURN 
2

試試這個,你正在使用錯誤的別名。

UPDATE T1 SET Name = T2.Name 
, Age = T2.Age 
, Subject = T2.Subject 
FROM Student T1 
, Student T2 
WHERE T1.StudentID = @OldID 
AND T2.StudentID = @NewID 
+0

我沒有在問題中發現任何不同提及的查詢... –

相關問題