से अद्यतन के लिए लक्ष्य तालिका 'NAME' निर्दिष्ट नहीं कर सकते हैं। मैं MySQL डीबी में तालिका में अपने डेटा के this समाधान को लागू करने का प्रयास कर रहा हूं जिसमें डुप्लिकेट है। और मुझे ऐसी त्रुटि मिलती है:आप खंड
SQL Error [1093] [HY000]: You can't specify target table 'NAME' for update in FROM clause
DELETE NAME FROM NAME
WHERE NAME.id NOT IN
(SELECT MIN(id)
FROM NAME GROUP BY col1, col2)
भी उपनाम असाइन करने की कोशिश की - लेकिन सफलता के बिना। इस त्रुटि का क्या कारण है? यह आम तौर पर इंगित करता है कि एसक्यूएल स्क्रिप्ट चक्रीय प्रक्रिया का उत्पादन कर सकती है, लेकिन यहां मैं वास्तव में इसके लिए कोई प्रासंगिक नहीं देखता - यह स्पष्ट है कि DELETE
और SELECT
के लिए दो चयन अलग-अलग हैं - इंजन को पहलेकरना चाहिए और फिर WHERE
स्थितियों में इसका उपयोग करना चाहिए DELETE
के लिए। तो - यह त्रुटि क्यों होती है और मैं वास्तव में अपनी तालिका को कैसे डुप्लिकेट कर सकता हूं? =)
आपकी क्वेरी उस समाधान से किसी एक जैसा दिखता है जिसे आप लागू करने का प्रयास कर रहे हैं।वे एक जॉइन का उपयोग करते हैं, जबकि आप 'इन नहीं' का उपयोग कर रहे हैं। – eggyal
@eggyal मेरा लिंक टिप्पणी के लिए इंगित करता है, जवाब नहीं –
आह, काफी उचित; मैंने यह नहीं देखा था। वह टिप्पणी एसक्यूएल सर्वर विशिष्ट है। आपको जवाब में दिए गए शामिल मिलेगा MySQL में काम करेगा। – eggyal