2011-12-19 12 views
23

कहो table1 और table2 पहले से ही मौजूद है, वहाँ इन प्रश्नों के बीच कोई अंतरएसक्यूएल सर्वर 'का चयन करें * में' बनाम '..select में डालने *

QUERY1 है: -

select * into table1 from table2 where 1=1 

QUERY2: -

insert into table1 select * from table2 
+5

संभव डुप्लिकेट http://stackoverflow.com/questions/6947983/insert-into-vs-select -इंटो) और कई अन्य – gbn

उत्तर

41

select * into table1 from table2 where 1=1 तालिका 1 बनाता है और उनमें तालिका 2 के मानों को सम्मिलित करता है। इसलिए, यदि तालिका पहले ही बनाई गई है तो वह कथन एक त्रुटि देगा।

insert into table1 select * from table2 केवल तालिका 1 में तालिका 2 के मानों को सम्मिलित करता है।

+2

मुझे उस त्रुटि की जानकारी नहीं थी जो तालिका -1 के द्वारा क्वेरी -1 द्वारा उत्पन्न की जाएगी। आपका बहुत बहुत धन्यवाद ! –

7

पहले एक (SELECT INTO) बना सकते हैं और एक नई तालिका दूसरा (INSERT... SELECT) से स्थापित हो जाएगा एक मौजूदा टेबल में डाल देता है।

2008 से पहले SQL सर्वर के संस्करणों में पहले एक न्यूनतम लॉग इन किया जा सकता है और दूसरा एक नहीं बल्कि this is no longer true

3

QUERY2 में, तालिका table1चाहिए आदेश

QUERY1 में, table1 या बनाया जाएगा अगर यह पहले से मौजूद है

4
select * into table1 from table2 where 1=1 

क्वेरी ऊपर एक त्रुटि फेंक दिया जाएगा चलाने से पहले अस्तित्व में आवश्यकता है कि तालिका मौजूद नहीं है। आपको कॉलम निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि सभी कॉलम बनाए गए हैं क्योंकि उन्हें स्रोत तालिका से पुनर्प्राप्त किया गया है।

insert into table1 select * from table2 

उपर्युक्त क्वेरी के लिए, आपको एक मौजूदा तालिका 1 की आवश्यकता है। दोनों तालिकाओं में कॉलम भी एक ही क्रम में होना चाहिए, अन्यथा आपको दोनों तालिकाओं के लिए कॉलम सूची प्रदान करने की आवश्यकता है।

1
INSERT INTO TABLE_A SELECT * FROM TABLE_B 

आमतौर पर उपयोग की जाने वाली वाक्य है, जिसका उपयोग किसी तालिका के मान को किसी अन्य तालिका में सम्मिलित करने के लिए किया जाता है। चयनित कॉलम भी इसका उपयोग करके सम्मिलित किए जा सकते हैं।

SELECT * INTO TABLE_A FROM TABLE_B 

एक नया TABLE_A TABLE_B के मूल्यों के साथ आबादी आएगी

[INSERT INTO बनाम चयन जांच] (की
संबंधित मुद्दे