2012-08-02 25 views
131

एक अस्थायी तालिका बनाने और डेटा प्रकारों को घोषित करने के बाद;अस्थायी तालिका में डेटा डालने

CREATE TABLE #TempTable(
ID int, 
Date datetime, 
Name char(20)) 

फिर मैं डेटाबेस के भीतर भौतिक तालिका पर पहले से मौजूद प्रासंगिक डेटा को कैसे सम्मिलित करूं?

उत्तर

165
INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table 
2
insert #temptable 
select idfield, datefield, namefield from yourrealtable 
4

आप अस्थायी तालिका बनाने के बाद आप सिर्फ एक सामान्य INSERT INTO() SELECT FROM

INSERT INTO #TempTable (id, Date, Name) 
SELECT t.id, t.Date, t.Name 
FROM yourTable t 
4
INSERT INTO #TempTable(ID, Date, Name) 
SELECT OtherID, OtherDate, OtherName FROM PhysicalTable 
5
insert into #temptable (col1, col2, col3) 
select col1, col2, col3 from othertable 

ध्यान दें कि यह गरीब अभ्यास माना जाता है करना होगा:

insert into #temptable 
select col1, col2, col3 from othertable 

यदि अस्थायी तालिका की परिभाषा को बदलना था, तो कोड रनटाइम पर विफल हो सकता था।

53
SELECT ID , Date , Name into #temp from [TableName] 
7

सही क्वेरी:

drop table #tmp_table 

select new_acc_no, count(new_acc_no) as count1 
into #tmp_table 
from table 
where unit_id = '0007' 
group by unit_id, new_acc_no 
having count(new_acc_no) > 1 
+8

इस उत्तर में इस प्रश्न के साथ कुछ लेना देना नहीं है। आपने यह जानकारी कहीं और से ली है। 'New_acc_no',' unit_id = '0007''', 'समूह द्वारा', 'गिनती (new_acc_no)> 1', आदि को हटाकर उत्तर को सही डुप्लिकेट में बदल देता है: http://stackoverflow.com/a/15762663/ 1476885 – Zanon

23

मेरे एसक्यूएल सर्वर में Insert के रास्ते। इसके अलावा मैं आमतौर पर जांचता हूं कि एक अस्थायी तालिका मौजूद है या नहीं।

IF OBJECT_ID('tempdb..#MyTable') IS NOT NULL DROP Table #MyTable 

SELECT b.Val as 'bVals' 
    INTO #MyTable 
FROM OtherTable as b 
47

सभी स्तंभों से सभी डेटा सम्मिलित करने के लिए, बस इस का उपयोग करें:

SELECT * INTO #TempTable 
FROM OriginalTable 

DROP अस्थायी तालिका के लिए मत भूलना के बाद आप इसके साथ समाप्त कर दिया है और इससे पहले कि आप इसे फिर से बनाने की कोशिश :

DROP TABLE #TempTable 
+3

मुझे यह पसंद है क्योंकि मुझे वास्तव में '# TempTable' – MAbraham1

9
SELECT * 
INTO #TempTable 
FROM table 
+0

सरलतम उत्तर' बनाना 'नहीं है। आप dbo.MyTable का भी उपयोग कर सकते हैं और यह एक स्थायी तालिका होगी। आसान peasy – Fandango68

1

टेम्पो की बुनियादी आपरेशन rary तालिका नीचे दी गई है, संशोधित करने और अपनी आवश्यकताओं के अनुसार उपयोग करते हैं,

- बनाएँ अस्थायी टेबल

CREATE TABLE #MyTempEmployeeTable(tempUserID varchar(MAX), tempUserName varchar(MAX)) 

- एक अस्थायी तालिका में मान प्रविष्ट

INSERT INTO #MyTempEmployeeTable(tempUserID,tempUserName) SELECT userid,username FROM users where userid =21 

- QUERY एक टेम्पलेट टेबल [यह केवल उसी सत्र/इंस्टेंस में काम करेगा, अन्य उपयोगकर्ता सत्र उदाहरण में नहीं]

SELECT * FROM #MyTempEmployeeTable 

- हटाएँ अस्थायी तालिका में मूल्य

DELETE FROM #MyTempEmployeeTable 

- बूंद अस्थायी टेबल

DROP TABLE #MyTempEmployeeTable 
+0

जबकि मुझे लगता है कि यह एक temp तालिका है, मैं अभी भी किसी को वर्चर (MAX) का उपयोग करने की सलाह नहीं दूंगा। –

+0

@bp_ यह एक सामान्यीकृत नमूना स्निपेट है जो उपयोगकर्ता को बताता है और उपयोगकर्ता डेटा प्रकार और उसके आकार को उनके आवेदन आवश्यकताओं के आधार पर निर्दिष्ट कर सकता है। –

3

मैं दो दृष्टिकोण प्रदान की है एक ही मुद्दे को हल करने के लिए,

समाधान 1: इस दृष्टिकोण में 2 चरण शामिल हैं, पहले निर्दिष्ट डेटा प्रकार के साथ एक अस्थायी तालिका बनाएं, इसके बाद मौजूदा डेटा तालिका से मान डालें।

CREATE TABLE #TempStudent(tempID int, tempName varchar(MAX)) 
INSERT INTO #TempStudent(tempID, tempName) SELECT id, studName FROM students where id =1 

SELECT * FROM #TempStudent 

समाधान 2: यह दृष्टिकोण, सरल है, जहां आप सीधे अस्थायी तालिका, जहां स्वचालित रूप से सिस्टम मूल के एक ही डेटा प्रकार के साथ अस्थायी तालिका बनाने की देखभाल करने के मूल्यों सम्मिलित कर सकते हैं तालिका।

SELECT id, studName INTO #TempStudent FROM students where id =1 

SELECT * FROM #TempStudent 
+0

जबकि मुझे लगता है कि यह एक temp तालिका है, मैं अभी भी किसी को वर्चर (MAX) का उपयोग करने की सलाह नहीं दूंगा। –

संबंधित मुद्दे