फ़ील्ड सूची में कॉलम 'user_id' ambiguou है

क्लोनिंग करते समय मैं इस समस्या को कैसे हल कर सकता हूं?

फ़ील्ड सूची में कॉलम 'user_id' संदिग्ध है ... क्यों?

मेरी क्वेरी यहां दी गई है:

 Insert into user_table Select * from user_table 
  where user_id = 21 on duplicate KEY
  UPDATE  user_id =LAST_INSERT_ID(user_id ).
1
तालिकाओं को परिभाषित करने और कॉलम को पुनर्प्राप्त करने के लिए AS का उपयोग करें, उदाहरण के लिए तालिका 1 से t1 के रूप में चुनें * t1.id = 21
जोड़ा लेखक Razorphyn, स्रोत
उपयोगकर्ता_टेबल में t1 के रूप में डालें * उपयोगकर्ता_टेबल से t1 के रूप में चुनें जहां t1.user_id = 21 डुप्लिकेट कुंजी अद्यतन t1.user_id = LAST_INSERT_ID (user_id) पर। क्या मैं सही हू?
जोड़ा लेखक Nandakumar, स्रोत
आपके SQL वाक्यविन्यास में आपको एक त्रुटि है; उपयोगकर्ता नाम से t1 के रूप में 't1 select * के रूप में उपयोग करने के लिए सही वाक्यविन्यास के लिए अपने MySQL सर्वर संस्करण के अनुरूप मैन्युअल जांचें, जहां t1.user_id = 21 d1.user_id = 21 को डुप्लिकेट कुंजी अद्यतन पर लाइन 1 पर .... त्रुटि प्राप्त करना
जोड़ा लेखक Nandakumar, स्रोत
मैंने इस तरह बदल दिया ... कोई त्रुटि नहीं .. लेकिन शून्य पंक्ति डाली गई ... user_table में डालें * उपयोगकर्ता_टेबल से t1 के रूप में चुनें जहां t1.user_id = 21 डुप्लिकेट कुंजी अद्यतन उपयोगकर्ता_आईडी = LAST_INSERT_ID (user_table.user_id) पर।
जोड़ा लेखक Nandakumar, स्रोत
तालिका नामों के साथ उपनाम का उपयोग करें। एसक्यूएल पार्सर उलझन में है कि किस बिंदु पर user_id कॉलम जिसका आप उल्लेख कर रहे हैं।
जोड़ा लेखक SajjadHashmi, स्रोत

1 उत्तर

आपकी क्वेरी के साथ समस्या यह है कि आप पूरी पंक्ति ले रहे हैं और इसे प्राथमिक कुंजी के साथ उसी तालिका में डालने का प्रयास कर रहे हैं। आपको प्राथमिक कुंजी को छोड़कर अन्य सभी स्तंभों का चयन करना है और फिर तालिका में सम्मिलित करना है, जिससे एसक्यूएल आईडी को ऑटोइनक्रिकमेंट करने की इजाजत देता है:

insert into user_table (c1, c2, ...)
    select c1, c2, ...
    from user_table
    where user_id = 1

सी 1, सी 2, ... आपकी प्राथमिक कुंजी के अलावा कॉलम हैं (user_id)

अनुलेख देर से उत्तर के लिए क्षमा करें। सप्ताहांत पार्टी के लिए हैं! ;)

0
जोड़ा
कोई भी त्रुटि नहीं ....
जोड़ा लेखक Nandakumar, स्रोत
मेरा सवाल यह है कि मुझे user_table पंक्ति को क्लोन करना होगा और उपयोगकर्ता तालिका में सभी कॉलम डालना होगा। उपयोगकर्ता कुंजी प्राथमिक कुंजी user_id की सहमति है। जब मैं क्लोन और सम्मिलित करता हूं तो मुझे त्रुटि 'डुप्लिकेट आईडी' मिल रही है। मैं अंतिम सम्मिलित आईडी के साथ क्लोन किए गए user_id को कैसे प्रतिस्थापित कर सकता हूं
जोड़ा लेखक Nandakumar, स्रोत
मैंने कोशिश की है कि उपयोगकर्ता_टेबल में INTERT काम नहीं कर रहा है * उपयोगकर्ता_टेबल AS से जहां p.user_id = 21 पर लागू कुंजी अद्यतन उपयोगकर्ता_table.user_id = LAST_INSERT_ID() कार्य करना लेकिन आईडी बदल नहीं रहा है
जोड़ा लेखक Nandakumar, स्रोत
मैं कॉलम स्पष्ट रूप से दोस्त का उल्लेख नहीं करना चाहता ... किसी भी तरह से आपकी प्रतिबद्धता के लिए धन्यवाद ...
जोड़ा लेखक Nandakumar, स्रोत
मैं सिर्फ आपकी प्रतिबद्धता की सराहना करता हूं ... ठीक दोस्त।
जोड़ा लेखक Nandakumar, स्रोत
मैं सिर्फ आपकी प्रतिबद्धता की सराहना करता हूं ... ठीक दोस्त ... प्रोग्रामर को काम करने की ज़रूरत है ... आप संपर्क में रहें
जोड़ा लेखक Nandakumar, स्रोत
अरे हाँ। आपकी मूल पोस्ट पर आपकी टिप्पणियों के बाद (मुझे वहां टिप्पणी करने के लिए पर्याप्त रेपो नहीं लगता है), यह इस तरह काम नहीं करता है। क्या आप तालिका से एक विशेष पंक्ति खींचने की कोशिश कर रहे हैं और इसे उसी तालिका में डालें? यदि आप यही कोशिश कर रहे हैं, तो एक अलग तरीका है। कृपया बताएं कि आप क्या हासिल करने की कोशिश कर रहे हैं।
जोड़ा लेखक DetourToNirvana, स्रोत
हे, आपकी समस्या को समझने के बाद जवाब संपादित किया। और देरी के लिए खेद है, दोस्त।
जोड़ा लेखक DetourToNirvana, स्रोत
आह। खैर, उस स्थिति में, यहां कुछ संदर्भ दिए गए हैं जो आपको आपकी समस्या पर बंद करने के लिए प्रेरित कर सकते हैं: डुप्लिकेट डालें , Last_insert_id । मैं अनुशंसा करता हूं कि आप स्पष्ट रूप से 'user_id' के अलावा सभी कॉलम का उल्लेख करने के लिए दर्द उठाएं।
जोड़ा लेखक DetourToNirvana, स्रोत