2010-09-11 13 views
8

मेरे पास दो INSERT आदेश हैं, जो मेरे लिए बेकार हैं क्योंकि पंक्तियों के दो सेट - जो पहले से ही तालिका में हैं, और जिनके पास INSERT कमांड हैं - वे विसंगत नहीं हैं। दोनों कमांड पंक्तियों और बहुत सारे मूल्यों को सम्मिलित करते हैं।INSERT आदेशों को अद्यतन करने के लिए

इसलिए यदि मैं उन पंक्तियों को निष्पादित करना चाहता हूं तो मुझे डुप्लिकेट प्रविष्टि त्रुटि मिलती है।

क्या उन आदेशों को ''में परिवर्तित करने का कोई आसान तरीका है?

मुझे पता है कि यह बेवकूफ लगता है, क्योंकि मैं पर INSERT आदेश क्यों बना सकता हूं। बस इसे एक स्पष्ट परिदृश्य बनाने के लिए: - समस्या हल

सबसे पहले मैं एक मेज बनाया है और वह भर के साथ एक और डेवलपर मुझे स्क्रिप्ट :)

अग्रिम धन्यवाद, डैनियल

संपादित दिया

REPLACE 
    INTO table_1 
SELECT * 
    FROM table_2; 

यह मूल रूप में पाया जा सकता:: मेरे INSERT आदेशों, तो मैं निम्नलिखित REPLACE आदेश इस्तेमाल किया How can I merge two MySQL tables?

+2

कौन सा एसक्यूएल में INSERT ... ON DUPLICATE KEY वाक्य रचना को देखने के आपके प्रश्नों संशोधित कर सकते हैं? कुछ प्रकार (उदाहरण के लिए एमएसएसक्यूएल) मेर्ज स्टेटमेंट का समर्थन करते हैं जो निश्चित रूप से आपकी सड़क पर होगा। कृपया अपने टैग अपडेट करें। – spender

+0

आपकी सूचना के लिए धन्यवाद। हम MySQL प्रश्नों के बारे में बात कर रहे हैं। –

उत्तर

13

MySQL का REPLACE कीवर्ड यह करता है। REPLACE शब्द के साथ बस अपने प्रश्नों में INSERT कीवर्ड को प्रतिस्थापित करें और इसे नए डालने के बजाय पंक्तियों को अपडेट करना चाहिए। कृपया ध्यान दें कि यह केवल तभी काम करेगा यदि आप प्राथमिक कुंजी या अद्वितीय कुंजी कॉलम डाल रहे हैं।

+1

धन्यवाद! मैं विस्तृत रूप से अपने समाधान की व्याख्या करने के लिए एक संपादन कर दूंगा। –

+1

इससे समस्याएं पैदा हो सकती हैं। प्रतिस्थापन का उपयोग करके डुप्लिकेट कुंजी के साथ पंक्ति को हटा दिया जाएगा और पूरी नई पंक्ति लिखें। यह आपकी अनुक्रमणिका को गड़बड़ कर सकता है और ओवरहेड जोड़ सकता है। 'डुप्लिकेट ... अपडेट' पर उपयोग करना अधिक उचित है जो आपके इंडेक्स को बनाए रखेगा। प्रतिस्थापन एक बार परिदृश्य पर बेहतर होता है जहां आप तालिका को अद्यतन करने के लिए बार-बार पूछे जाने वाले प्रश्नों के बजाय रीइन्डेक्स को इंडेक्स करते हैं। –

0

आपको उन्हें हाथ से अपडेट के लिए फिर से लिखना होगा। अगर मैं ऐसी समस्या को घुमाता हूं, तो मैं पहले कुछ प्राथमिक कुंजी की गिनती के लिए पूछता हूं, अगर कोई नहीं मिला है तो मैं एक सामान्य डेटासेट डालता हूं और बाद में इसे अपडेट करता हूं। इसके द्वारा, नया डेटा जोड़ा जा सकता है और पहले से ही मौजूदा डेटा अपडेट किया जाएगा, और आपको नए डेटा डालने और डेटा अपडेट करने के बीच अंतर करने की आवश्यकता नहीं है।

0

MySQL के लिए, आप या तो INSERT IGNORE या INSERT ... ON DUPLICATE UPDATE सिंटैक्स का उपयोग कर सकते हैं। MySQL reference manual

0

आप आसानी से डुप्लिकेट पंक्तियों को अद्यतन करने के लिए, MySQL

+0

मैं ऑन डिप्लिकेट कुंजी समाधान के बारे में सोच रहा था, लेकिन मुझे नहीं लगता कि यह कैसे आसान होगा। –

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