2010-10-25 14 views
24

का उपयोग करने में चयन करें मैं निम्नलिखित क्वेरी के साथ SQL सर्वर में एक नई तालिका बनाना चाहता हूं। मैं समझने में असमर्थ हूं कि यह क्वेरी क्यों काम नहीं करती है।यूनियन QUERY

QUERY1: काम करता है

SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 

QUERY2: काम नहीं करता। त्रुटि: Msg 170, Level 15, State 1, Line 7 Line 7: Incorrect syntax near ')'.

SELECT * INTO [NEW_TABLE] 
FROM 
(
SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 
) 

धन्यवाद!

उत्तर

50

आप एसक्यूएल सर्वर में एक व्युत्पन्न तालिका के लिए एक मेज उर्फ ​​परिभाषित करने के लिए है:

SELECT x.* 
    INTO [NEW_TABLE] 
    FROM (SELECT * FROM TABLE1 
     UNION 
     SELECT * FROM TABLE2) x 

"x" इस उदाहरण में तालिका उर्फ ​​है।

+0

जब मैं यह कोशिश, यह मेरे अभिलेखों की संख्या का योग नहीं देता तालिका 1 और टैबलेट 2, यह हमेशा कम है। क्या आपको पता चलेगा कि ऐसा क्यों होता है? धन्यवाद! – Christa

+1

@ क्रिस्टा - यह दोनों टेबलों में एक ही पंक्ति होने की संभावना है, यह केवल संघ के लिए एक रिकॉर्ड बनायेगा। यदि आप 'यूनियन ऑल' का उपयोग करते हैं तो यह डुप्लीकेट को नहीं हटाएगा। – Hashman

1

तुम भी कोशिश कर सकते हैं:

create table new_table as 
select * from table1 
union 
select * from table2 
+3

एसक्यूएल सर्वर वाक्यविन्यास नहीं। –

1
select * 
into new_table 
from table_A 
UNION 
Select * 
From table_B 

यह केवल काम करता है अगर Table_A और Table_B एक ही स्कीमा है

+0

आप अन्य स्कीमा और/या डेटाबेस तक पहुंचने के लिए तीन (और चार तालिका को लिंक किए गए सर्वर इंस्टेंस पर हैं) नाम प्रारूप का उपयोग कर सकते हैं। –

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