MySQL में एक टेबल से दूसरी टेबल पर डेटा कॉपी कैसे करें?


143

मैं MySQL में एक टेबल से दूसरे में डेटा कॉपी करना चाहता हूं।

तालिका 1 (मौजूदा तालिका):

aid    
st_id
from_uid
to_gid
to_uid
created
changed
subject
message
link

तालिका 2 (नई तालिका)

st_id
uid
changed
status
assign_status

मैं TABLE 1 से डेटा के कुछ क्षेत्रों को TABLE 2 में कॉपी करना चाहता हूं।

क्या यह MySQL प्रश्नों का उपयोग करके किया जा सकता है?


1
क्या यह एक बार काम है या आप इसे नियमित रूप से करने की योजना बना रहे हैं?
8

@@ jdias: अब तक यह एक बार का काम है ..
फ़िरो

@jdias स्पष्ट करने के लिए, यदि यह एक बार का काम नहीं है, तो MySQL noob को इसके बजाय क्या करना चाहिए?
सीनिइज़ १२

1
संभवतः डुप्लिकेट डेटा से बचने के लिए विचार।
जेम्स ब्रैडबरी

जवाबों:


280

यह वही करेगा जो आप चाहते हैं:

INSERT INTO table2 (st_id,uid,changed,status,assign_status)
SELECT st_id,from_uid,now(),'Pending','Assigned'
FROM table1

यदि आप तालिका 1 से सभी पंक्तियों को शामिल करना चाहते हैं। अन्यथा आप WHERE स्टेटमेंट को अंत में जोड़ सकते हैं यदि आप केवल टेबल 1 का सबसेट जोड़ना चाहते हैं।

आशा है कि ये आपकी मदद करेगा।


महान, यह देखकर खुशी हुई कि मैं टी-एसक्यूएल में उपयोग किया गया है।
जिपरसन

1
MySQL से प्यार करने का एक और कारण, बहुत सहज!
peceps

यदि आप सभी तालिका 1 डेटा की प्रतिलिपि बनाना चाहते हैं, तो आपको प्रतिलिपि @SANDEEP से पहले नया टेबल 2 बनाना होगा
सचिन पुणे से

77

यदि आप फ़ील्ड को सूचीबद्ध नहीं करना चाहते हैं, और तालिकाओं की संरचना समान है, तो आप कर सकते हैं:

INSERT INTO `table2` SELECT * FROM `table1`;

या यदि आप एक ही संरचना के साथ एक नई तालिका बनाना चाहते हैं:

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;

सम्मिलित चयन के लिए संदर्भ ; तालिका चयन के लिए संदर्भ


2
[AS]चौकोर कोष्ठक में क्यों है, यहाँ क्या किया जाता ASहै
कसुन सियामबलपिटिया

3
यह दर्शाता है कि यह शब्द वैकल्पिक है। यह उस तरह से लिखा जाता है क्योंकि मैंने डॉक्स से कॉपी और पेस्ट किया; यह कुछ भी नहीं जोड़ता है। मुझे लगता है कि ASअन्य SQL बोलियों में यह अनिवार्य है।
ब्रायन

22

आप आसानी से दूसरी तालिका से डेटा प्राप्त कर सकते हैं। आपको केवल अपने इच्छित फ़ील्ड को जोड़ना होगा।

Mysql क्वेरी है:

INSERT INTO table_name1(fields you want)
  SELECT fields you want FROM table_name2


जहाँ, मानों को तालिका 2 से तालिका 1 में कॉपी किया जाता है



4

सबसे अच्छा विकल्प INSERT ... mysql में सेलेक्ट स्टेटमेंट का उपयोग करना है।

http://dev.mysql.com/doc/refman/5.0/en/insert-select.html


1
सहज :) मुझे यह पसंद है। यह एक सामान्य चयन विवरण है, जो "INSERT INTO" की एक पंक्ति से पहले है।
हायथम स्वीमिलम


2
INSERT INTO Table1(Column1,Column2..) SELECT Column1,Column2.. FROM Table2 [WHERE <condition>]

2
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन यह बताना बेहतर होगा कि यह समस्या को हल कैसे करता है और इसका उपयोग क्यों करना है। कोड-केवल उत्तर लंबे समय में उपयोगी नहीं हैं।
टोबियास लाइपके 15

0

आप इस कोड को आज़मा सकते हैं

insert into #temp 
select Product_ID,Max(Grand_Total) AS 'Sales_Amt', Max(Rec_Amount) ,'',''
from Table_Name group by Id

0

उपरोक्त क्वेरी केवल तभी काम करती है जब हमने ग्राहकों के मेल खाते कॉलम के साथ क्लाइंट टेबल बनाया हो

INSERT INTO clients(c_id,name,address)SELECT c_id,name,address FROM customer

0

आपको पहले टेबल 2 बनाना चाहिए।

तालिका 2 (फ़ील्ड 1, फ़ील्ड 2, ...) में डालें
फ़ील्ड 1, फ़ील्ड 2, का चयन करें ...।
तालिका 1 से
जहां हालत;

0

यदि तालिका मौजूद है। आप old_tale से table_name select * में सम्मिलित करने का प्रयास कर सकते हैं;

यदि तालिका मौजूद नहीं है। आपको पुराने_ जैसे तालिका तालिका_नाम बनाने का प्रयास करना चाहिए; table_name चयन में डालें * old_tale से;

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