Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL त्रुटि 1093 - खंड से अद्यतन के लिए लक्ष्य तालिका निर्दिष्ट नहीं कर सकता

अद्यतन:यह उत्तर सामान्य त्रुटि वर्गीकरण को शामिल करता है। ओपी की सटीक क्वेरी को सर्वोत्तम तरीके से संभालने के तरीके के बारे में अधिक विशिष्ट उत्तर के लिए, कृपया इस प्रश्न के अन्य उत्तर देखें

MySQL में, आप उसी तालिका को संशोधित नहीं कर सकते जिसका उपयोग आप SELECT भाग में करते हैं।
यह व्यवहार यहां प्रलेखित है:http://dev.mysql.com/doc/refman/5.6/en/update.html

हो सकता है कि आप केवल तालिका में ही शामिल हों

यदि तर्क क्वेरी को फिर से आकार देने के लिए पर्याप्त सरल है, तो सबक्वायरी खो दें और उपयुक्त चयन मानदंड को नियोजित करते हुए तालिका में शामिल हो जाएं। यह MySQL को तालिका को दो अलग-अलग चीजों के रूप में देखने का कारण बनेगा, जिससे विनाशकारी परिवर्तन आगे बढ़ सकेंगे।

UPDATE tbl AS a
INNER JOIN tbl AS b ON ....
SET a.col = b.col

वैकल्पिक रूप से, उप-क्वेरी को से खंड में गहराई से नेस्ट करने का प्रयास करें ...

यदि आपको पूरी तरह से सबक्वायरी की आवश्यकता है, तो एक समाधान है, लेकिन यह प्रदर्शन सहित कई कारणों से बदसूरत है:

UPDATE tbl SET col = (
  SELECT ... FROM (SELECT.... FROM) AS x);

FROM क्लॉज में नेस्टेड सबक्वेरी एक अंतर्निहित अस्थायी बनाता है , इसलिए यह उसी तालिका के रूप में नहीं गिना जाता है जिसे आप अपडेट कर रहे हैं।

... लेकिन क्वेरी ऑप्टिमाइज़र से सावधान रहें

हालांकि, सावधान रहें कि MySQL 5.7 से .6 और आगे, ऑप्टिमाइज़र सबक्वेरी को ऑप्टिमाइज़ कर सकता है, और फिर भी आपको त्रुटि दे सकता है। सौभाग्य से, optimizer_switch इस व्यवहार को बंद करने के लिए चर का उपयोग किया जा सकता है; हालांकि मैं इसे एक अल्पकालिक सुधार, या छोटे एकबारगी कार्यों के अलावा और कुछ करने की अनुशंसा नहीं कर सकता था।

SET optimizer_switch = 'derived_merge=off';

धन्यवाद पीटर वी. मॉर्च टिप्पणियों में इस सलाह के लिए।

उदाहरण तकनीक बैरन श्वार्ट्ज से थी, मूल रूप से नाबल में प्रकाशित , व्याख्या की गई और यहां विस्तारित की गई।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्लगइन का उपयोग किए बिना सीकेएडिटर में छवियों को अपलोड करना

  2. मैं MySQL में पिवट टेबल आउटपुट कैसे वापस कर सकता हूं?

  3. MySQL में प्राथमिक कुंजी को अनदेखा करते हुए डुप्लिकेट पंक्तियों को खोजने के 7 तरीके

  4. वर्ष () उदाहरण – MySQL

  5. मैं MySQL में कमांड लाइन का उपयोग करके SQL फ़ाइल कैसे आयात करूं?