Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

माता-पिता/बाल संबंधों के साथ एसक्यूएल थोक सम्मिलन, आदेश संरक्षित है?

अपनी लक्ष्य तालिका के समान संरचना के साथ दो स्टेजिंग टेबल बनाएं लेकिन रिको कॉलम पर पहचान का उपयोग न करें।

create table parentTmp (
   recno int,
   groupCode int,
   parentdata varchar(80)
);

create table childTmp (
   parentrecno int not null,
   childdata varchar(80)
)

recno/parentrecno मानों को यथावत रखते हुए, अपने डेटा को स्टेजिंग टेबल पर बल्क लोड करें।

फिर आप मर्ज का उपयोग कर सकते हैं और आउटपुट स्टेजिंग टेबल से डेटा को स्थानांतरित करने के लिए।

-- Table variable to hold mapping between 
-- SourceRecno and TargetRecno
declare @recno table(SourceRecno int, TargetRecno int);

-- Merge data from parentTmp to parent
-- Output old and new recno to @recno
merge parent T
using parentTmp S
on 0=1
when not matched then
  insert (groupCode, parentdata)
    values (S.groupCode, S.parentData)
output S.recno, inserted.recno into @recno;

-- Copy data from childTmp to child
-- Use @recno to get the new recno
insert into child(parentrecno, childdata)
select R.TargetRecno, C.childdata
from childTmp as C
  inner join @recno as R
    on C.parentrecno = R.SourceRecno;

यह केवल SQL Server 2008 में काम करेगा (और बाद में मुझे लगता है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में 'डेटाटाइम' को 'डेटाटाइम 2' में बदलें (T-SQL उदाहरण)

  2. SQL सर्वर (T-SQL) में प्राथमिक कुंजी का नाम बदलें

  3. SQL सर्वर संग्रहीत कार्यविधि लाइन नंबर समस्या

  4. SQL सर्वर में भौतिक दृश्य कैसे बनाएं?

  5. SQL सर्वर समांतर डेटावेयरहाउसिंग टीडीएस त्रुटि के लिए कर्सर समर्थन के लिए एक वर्कअराउंड एक कार्यान्वित सुविधा नहीं है