mysql

2013-02-16 3 views
40

में एक तालिका से दूसरे में डेटा डालें, मैं एक तालिका से सभी डेटा पढ़ना चाहता हूं और कुछ डेटा किसी अन्य तालिका में डालना चाहता हूं। मेरी क्वेरीmysql

INSERT INTO mt_magazine_subscription ( 
     magazine_subscription_id, 
     subscription_name, 
     magazine_id, 
     status) 
    VALUES ( 
     (SELECT magazine_subscription_id, 
       subscription_name, 
       magazine_id 
     FROM tbl_magazine_subscription 
     ORDER BY magazine_subscription_id ASC), '1') 

है, लेकिन मैं एक त्रुटि है कि

#1136 - Column count doesn't match value count at row 1 

कृपया मेरी मदद मिल गया।

उत्तर

85

की क्वेरी का उपयोग कर आप INSERT...SELECT सिंटैक्स का उपयोग कर सकते हैं सम्मिलित करने के लिए की जरूरत है। ध्यान दें कि आप सीधे भाग में '1' उद्धृत कर सकते हैं।

INSERT INTO mt_magazine_subscription ( 
     magazine_subscription_id, 
     subscription_name, 
     magazine_id, 
     status) 
SELECT magazine_subscription_id, 
     subscription_name, 
     magazine_id, 
     '1' 
FROM tbl_magazine_subscription 
ORDER BY magazine_subscription_id ASC 
0

इसे आजमाएं। गलत तरीके से कर रहे हैं।

INSERT INTO mt_magazine_subscription( 
    magazine_subscription_id, 
    subscription_name, 
    magazine_id, status) VALUES ( 
     (SELECT magazine_subscription_id, subscription_name, 
       magazine_id,1 as status FROM tbl_magazine_subscription 
       ORDER BY magazine_subscription_id ASC) 
    ) 
+0

यह चुनिंदा काम के आसपास अतिरिक्त माता-पिता के रूप में काम नहीं करता है। कृपया प्रलेखन देखें: http://dev.mysql.com/doc/refman/5.0/en/insert-select.html यह डीबी (कॉलम) में INSERT है तालिका से कॉलम चुनें जहां blah = 1; – transformerTroy

5

यह इस तरह काम नहीं करेगा।

जब आप किसी क्वेरी का उपयोग कर पंक्ति डालने का प्रयास करते हैं तो सभी मान क्वेरी में मौजूद होना चाहिए।

ऊपर समस्या आप का चयन क्वेरी में magazine_subscription_id, subscription_name, magazine_id, status सम्मिलित करना चाहते हैं के साथ

आप magazine_subscription_id, subscription_name, magazine_id, status 1 यह संभव नहीं है।

आप सम्मिलित करना चाहते हैं या तो आप सीधे मूल्यों

0
INSERT INTO mt_magazine_subscription ( 
     magazine_subscription_id, 
     subscription_name, 
     magazine_id, 
     status) 
    VALUES ( 
     (SELECT magazine_subscription_id, 
       subscription_name, 
       magazine_id,'1' as status 
     FROM tbl_magazine_subscription 
     ORDER BY magazine_subscription_id ASC)) 
+0

यह चुनिंदा काम के आसपास अतिरिक्त माता-पिता के रूप में काम नहीं करता है। कृपया प्रलेखन देखें: http://dev.mysql.com/doc/refman/5.0/en/insert-select.html यह डीबी (कॉलम) में INSERT है तालिका से कॉलम चुनें जहां blah = 1; – transformerTroy

-1
INSERT INTO destination_table ( 
     Field_1, 
     Field_2, 
     Field_3) 
SELECT Field_1, 
     Field_2, 
     Field_3 
     FROM source_table; 

लेकिन यह एक बुरा MYSQL

इस बजाय क्या है:

  1. drop the destination table: DROP DESTINATION_TABLE;
  2. CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE);
,210
+3

बीएडी MYSQL द्वारा आपका क्या मतलब है ?? और क्या होगा यदि हमारे पास DESTINATION_TABLE में पहले से कुछ डेटा है ?? –

+2

यह दोनों टेबलों में कॉलम की अलग-अलग संख्या के साथ INSERT/SELECT के बारे में प्रश्न का उत्तर नहीं देता है ... – Marki555

+1

मूल प्रश्न वाले व्यक्ति के पास गंतव्य तालिका में डेटा हो सकता है। एक तालिका छोड़ना उस संभावना के कारण एक अच्छा सभी उद्देश्य उत्तर की तरह नहीं लगता है। – chrisfs

3

वास्तव में एक से दूसरे टेबल से प्रति डेटा के लिए mysql क्वेरी
Insert into table2_name (column_names) select column_name from table1
जहां, मूल्यों table1 से नकल

-2
INSERT INTO mt_magazine_subscription SELECT * 
     FROM tbl_magazine_subscription 
     ORDER BY magazine_subscription_id ASC 
12

तालिका 2 के लिए आप एक और मेज पर एक मेज से सभी डेटा सम्मिलित करना चाहते हैं है वहाँ एक बहुत ही बस एसक्यूएल

INSERT INTO destinationTable (SELECT * FROM sourceDbName.SourceTableName); 
+2

मुझे लगता है कि यह सबसे अच्छा जवाब –

+0

कमाल है। लेकिन मेरे पास एक सवाल है: यह क्यों काम करता है? ''डालने' के लिए यह 'चयन' रिटर्न क्या है? –

1

अगर वहाँ की तरह एक प्राथमिक कुंजी है "आईडी" आप उदाहरण मेरी php टेबल है के लिए यह निकालने की ज़रूरत: आईडी, col2, col3, col4 कॉलम। आईडी प्राथमिक कुंजी है, इसलिए अगर मैं इस कोड चलाएँ:

INSERT INTO php (SELECT * FROM php); 

मैं शायद यह त्रुटि प्राप्त:

INSERT INTO php (col2,col3,col4) (SELECT col2,col3,col4 FROM php2); 
:

#1062 - Duplicate entry '1' for key 'PRIMARY'

तो यहाँ समाधान है, मैं "आईडी" कुंजी बाहर रखा गया

तो मेरी नई PHP तालिका में अब सभी php2 तालिका पंक्तियां हैं।

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