सवाल 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

क्रिप्या मेरि सहायता करे।


44
2018-02-16 07:00


मूल




जवाब:


आप उपयोग कर सकते हैं सम्मिलित करें ... का चयन करें वाक्य - विन्यास। ध्यान दें कि आप सीधे भाग में '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 

91
2018-02-16 07:09



यह सहायक है और मैंने 30k + पंक्तियों को दूसरे की तुलना में जोड़ने में काफी तेज़ पाया। धन्यवाद। - Jai


यदि आप एक टेबल से दूसरे टेबल में सभी डेटा डालना चाहते हैं तो एक बहुत ही सरल एसक्यूएल है

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

13
2017-10-15 07:17



मुझे लगता है कि यह सबसे अच्छा जवाब है - BARIS KURT
गजब का। लेकिन मेरे पास एक सवाल है: यह क्यों काम करता है? यह क्या select को वापस आता है insert into ? - Marcelo Rafael
@Gustav Bertram उन स्तंभों की संख्या जिन्हें आप स्रोत तालिका से चुन रहे हैं और गंतव्य तालिका में कॉलम की संख्या समान नहीं है। एसक्यूएल के सम्मिलित भाग में आप चार कॉलम का उपयोग कर रहे हैं और चयन भाग में आप केवल तीन कॉलम चुन रहे हैं। - Ravi


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

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

उपरोक्त समस्या के साथ आप डालना चाहते हैं magazine_subscription_id, subscription_name, magazine_id, status आपके पास चुनिंदा क्वेरी में है magazine_subscription_id, subscription_name, magazine_id, status 1 यह संभव नहीं है।

यदि आप या तो सम्मिलित करना चाहते हैं तो आपको प्रत्यक्ष मानों की क्वेरी का उपयोग करके सम्मिलित करने की आवश्यकता है


5
2018-02-16 07:07





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


3
2017-12-26 11:41





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

INSERT INTO php  (SELECT * FROM php);

मुझे शायद यह त्रुटि मिलती है:

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

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

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

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


1
2017-12-25 23:03





इसे इस्तेमाल करे। गलत तरीके से कर रहे हैं।

    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
2018-02-16 07:05



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


  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
2018-02-16 07:10



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