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.