2012-08-10 9 views
8

MySQLMySQL में कॉलम में से किसी एक पर चयन के आधार पर सम्मिलित है?

INSERT INTO student_fees(id, name, fees) 
VALUES(1, SELECT name from students where student_id = 1, 200$) 

में स्तंभ संभव में से एक पर चयन के आधार पर निम्न डालने यदि हाँ तो और उदाहरण वास्तव में मदद मिलेगी है।

शुक्रिया

+0

[MySQL मैनुअल] (http://dev.mysql.com/doc/refman/5.5/en/insert-select.html) स्पष्ट रूप से बताता है कि यह संभव है। हालांकि आपका वाक्यविन्यास गलत है। – Jocelyn

उत्तर

9

प्रयास करें INSERT...SELECT बयान

INSERT INTO student_fees(id, name, fees) 
SELECT ... -- put here the SELECT STATEMENT with condition 

यदि आपका कॉलम IDauto incremented है, तो आपको 1 निर्दिष्ट करने की आवश्यकता नहीं है या अन्यथा यह आपको एक त्रुटि देगा।

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM students   -- this will select all students on the table 
         -- and add $200 on thier fees. 

एक और मुद्दा यह है, अगर आप केवल student की मेज से एक स्तंभ सम्मिलित करना चाहते हैं, तो आप यो शर्त निर्दिष्ट की जरूरत है, तो आप यह सोचते हैं अपने कॉलम आईडी प्राथमिक कुंजी है बाधा त्रुटि नहीं मिलेगा ()

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM students 
WHERE columnName = 'blahBlah' 

अद्यतन 1

अपनी टिप्पणी को देखकर, तो आप इस प्रश्न हैं

INSERT INTO coupon_allotment (page_id, offer_id, coupon_code, user_id) 
SELECT page_id, 4, 'ABC'  -- number of columns mismatch, right? 
FROM pages_discounts_association 
WHERE discount_id = 4 

आप जरूरत ऊपरuser_id स्तंभ को निकालने के या आप जरूरत आदेश स्तंभों की संख्या से मिलान करने में अपने चयन बयान में एक ID जोड़ने के लिए।

+0

कंसन_लॉटमेंट (पेज_आईडी, ऑफर_आईडी, कूपनकोड, यूजर_आईडी) में पेज_आईडी, 4, 'एबीसी' पेज_डिस्काउंट_सॉसिएशन से चुनें जहां discount_id = 4 यह मेरी वास्तविक क्वेरी है क्या आप इसे मेरे लिए सही कर सकते हैं? –

+0

यह कई स्तंभ मेल नहीं है। मैंने अभी अपनी क्वेरी अपडेट की है .. देखें कि यह अब काम करता है या नहीं। –

+0

हां आपकी मदद के लिए धन्यवाद काम किया :) –

3

बस नियमित INSERT INTO ... SELECT सिंटैक्स का उपयोग करें और इस प्रकार स्थिरांक के रूप में अन्य क्षेत्रों का चयन करें:

INSERT INTO student_fees(id, name, fees) 
SELECT 1, `name`, '200$' FROM students 
+0

वास्तविक क्वेरी निम्न कार्य नहीं करता है: 'coupon_allotment' (page_id, offer_id, coupon_code, user_id) में शामिल करें पृष्ठ_आईडी, 4,' पृष्ठ 'डिस्काउंट_सॉसिएशन' से 'एबीसी' चुनें, जहां 'discount_id' = 4 –

+0

@Abhishek आपकी क्वेरी वास्तविक क्वेरी में है 4 कॉलम (page_id, offer_id, coupon_code, user_id) हैं, जबकि 'SELECT' में आपके पास अभी 3 है। इस क्वेरी के लिए 'INSERT' कथन में आपके पास 'SELECT' में बहुत से कॉलम हैं क्योंकि आपके पास काम करने के लिए' INSERT 'कथन है ! – Sirko

+0

@ अभिषेक: आपके पास 'VALUES (...) 'और' SELECT' में फ़ील्ड की समान संख्या होनी चाहिए। आपके मामले में: 4 फ़ील्ड फिर 3 फ़ील्ड। – Jocelyn

2

इस प्रयास करें:

INSERT INTO student_fees(id, name, fees) 
Select 1, name,'200$' from students 
संबंधित मुद्दे

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