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

आप खंड से अद्यतन के लिए लक्ष्य तालिका निर्दिष्ट नहीं कर सकते हैं

समस्या यह है कि MySQL, किसी भी कारण से, आपको इस तरह के प्रश्न लिखने की अनुमति नहीं देता है:

UPDATE myTable
SET myTable.A =
(
    SELECT B
    FROM myTable
    INNER JOIN ...
)

यानी, अगर आप UPDATE कर रहे हैं /INSERT /DELETE किसी तालिका पर, आप उस तालिका को किसी आंतरिक क्वेरी में संदर्भित नहीं कर सकते (आप कर सकते हैं हालांकि उस बाहरी तालिका से किसी फ़ील्ड का संदर्भ लें...)

समाधान myTable . के उदाहरण को बदलना है उप-क्वेरी में (SELECT * FROM myTable) . के साथ , इस तरह

UPDATE myTable
SET myTable.A =
(
    SELECT B
    FROM (SELECT * FROM myTable) AS something
    INNER JOIN ...
)

यह स्पष्ट रूप से आवश्यक क्षेत्रों को एक अस्थायी तालिका में निहित रूप से कॉपी करने का कारण बनता है, इसलिए इसकी अनुमति है।

मुझे यह समाधान मिला यहां . उस लेख का एक नोट:

<ब्लॉकक्वॉट>

आप केवल SELECT * FROM table . नहीं चाहते हैं वास्तविक जीवन में सबक्वेरी में; मैं सिर्फ उदाहरणों को सरल रखना चाहता था। वास्तव में, आपको उस अंतरतम क्वेरी में केवल उन स्तंभों का चयन करना चाहिए जिनकी आपको आवश्यकता है, और एक अच्छा WHERE जोड़ना चाहिए परिणाम भी सीमित करने के लिए खंड।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैक ओएस एक्स पर MySQLdb (MySQL के लिए पायथन डेटा एक्सेस लाइब्रेरी) कैसे स्थापित करें?

  2. MySQL में एकाधिक तालिकाओं से COUNT(*)

  3. MySQL में सूची आइटम की स्थिति कैसे वापस करें

  4. लोड डेटा इनफाइल त्रुटि कोड:13

  5. MySQL:समूह फ़ंक्शन का अमान्य उपयोग