अस्थायी तालिका में डेटा सम्मिलित करना


195

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

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

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

जवाबों:


244
INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table

5
अपने साथ एक बार तालिका को गिराने के लिए याद रखें, अन्यथा आप "डेटाबेस में पहले से ही '#TempTable' नाम की कोई वस्तु चला सकते हैं।" त्रुटि (क्या आपको फिर से क्वेरी चलाना चाहिए ...)
Rhdr

प्रारंभिक प्रश्न तालिका के बारे में था, जो पहले से ही बनाया गया था। जैसा कि टिप उपयोगी है, यह लेखक के सवाल से जुड़ा नहीं है
एलेक्ससुस्लिन

98

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

SELECT * INTO #TempTable
FROM OriginalTable

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

DROP TABLE #TempTable

9
मुझे यह पसंद है क्योंकि मैं की जरूरत नहीं हैCREATE#TempTable
MAbraham1


41

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

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

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


15

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

समाधान 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

जबकि मैं जानता हूं कि यह एक अस्थायी तालिका है, फिर भी मैं कभी भी किसी को varchar (MAX) का उपयोग करने की सलाह नहीं दूंगा।
bp_

8

सही क्वेरी:

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

10
इस जवाब का सवाल से कोई लेना-देना नहीं है। आपने यह जानकारी कहीं और से ली। निकाला जा रहा है new_acc_no, unit_id = '0007', group by, having count(new_acc_no) > 1, आदि रूपांतरण की एक सटीक दो प्रतियों में जवाब: stackoverflow.com/a/15762663/1476885
Zanon

7

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

INSERT INTO #TempTable (id, Date, Name)
SELECT t.id, t.Date, t.Name
FROM yourTable t

5
insert into #temptable (col1, col2, col3)
select col1, col2, col3 from othertable

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

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

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



3

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

- एक टेबल टेबल बनाएँ

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

- INSERT VALUE में एक TEMP टेबल है

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

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

SELECT * FROM #MyTempEmployeeTable

- TEMP टेबल में उपलब्ध मूल्य

DELETE FROM #MyTempEmployeeTable

- एक TEMP टेबल ड्रॉप करें

DROP TABLE #MyTempEmployeeTable

जबकि मैं जानता हूं कि यह एक अस्थायी तालिका है, फिर भी मैं कभी भी किसी को varchar (MAX) का उपयोग करने की सलाह नहीं दूंगा।
bp_

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.