2012-10-11 19 views
9

में एक ही तालिका अद्यतन करें मैं उसी तालिका डेटा से उसी तालिका डेटा को अद्यतन करने का प्रयास कर रहा था।SQL सर्वर

मेरे सपा के रूप में नीचे दिखाया गया है:

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 

जब मैं इस क्वेरी को क्रियान्वित कर रहा हूँ, वहाँ कोई त्रुटि है। लेकिन अद्यतन काम नहीं कर रहा है।

+4

'@ OldID' और' @ NewID' समान हैं? – Oded

+1

आपकी क्वेरी को काम करना चाहिए (http://sqlfiddle.com/#!3/d7728/13)। शायद '@ ओल्डआईडी' और '@ न्यूआईडी' @ ओडेड सुझावों के समान हैं। –

+0

हां वे समान हैं। छात्रवृत्ति अद्वितीय पहचानकर्ता है। –

उत्तर

5

[यहाँ कोई आम स्तंभ मान T1.StudentID = T2.StudentID तरह तुलना करने के लिए] इस प्रयास करें:

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

मुझे प्रश्न में कोई अलग उल्लिखित क्वेरी नहीं मिली ... –