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

एक क्वेरी से परिणाम सेट डालने के दौरान MySQL ऑन डुप्लीकेट कुंजी अद्यतन

समस्या यह है कि डुप्लीकेट कुंजी क्लॉज में आप किसी भी ग्रुपिंग फ़ंक्शन (जैसे COUNT .) का उपयोग नहीं कर सकते हैं . हालाँकि, इस समस्या को हल करने का एक आसान तरीका है। आप बस COUNT(crime_id) . का परिणाम निर्दिष्ट करें एक वैरिएबल को कॉल करें, जिसे आप कर सकते हैं डुप्लिकेट कुंजी क्लॉज में उपयोग करें। तब आपका इन्सर्ट स्टेटमेंट इस तरह दिखेगा:

INSERT INTO `simple_crimecount` (`date` , `city` , `crimecount`)(
    SELECT 
        `date`, 
        `city`,
        @determined_crimecount := count(`crime_id`) AS `determined_crimecount`
    FROM `big_log_of_crimes`
    GROUP BY `date`, `city`
) ON DUPLICATE KEY UPDATE `crimecount` = @determined_crimecount;

मैंने एक SQL Fiddle बनाया है जो आपको दिखाता है कि यह कैसे काम करता है:SQL-Fiddle ए>

आप UPDATE crimecount = VALUES(crimecount) . का भी उपयोग कर सकते हैं और कोई चर नहीं:

INSERT INTO `simple_crimecount` (`date` , `city` , `crimecount`)(
    SELECT 
        `date`, 
        `city`,
        count(`crime_id`) AS `determined_crimecount`
    FROM `big_log_of_crimes`
    GROUP BY `date`, `city`
) ON DUPLICATE KEY UPDATE `crimecount` = VALUES(crimecount);

देखें SQL-Fiddle-2




  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. रेडीस्टेटमेंट क्वेरी में पैरामीटर को अनदेखा करता है:java.sql.SQLException:पैरामीटर इंडेक्स सीमा से बाहर है (1> पैरामीटर की संख्या, जो 0 है)

  3. दिन, सप्ताह, माह, वर्ष के अनुसार आंकड़े रखने के लिए डेटाबेस संरचना

  4. JSON_TYPE () - MySQL में JSON मान का प्रकार प्राप्त करें

  5. ProxySQL के साथ कनेक्शन हैंडलिंग और थ्रॉटलिंग