समस्या यह है कि डुप्लीकेट कुंजी क्लॉज में आप किसी भी ग्रुपिंग फ़ंक्शन (जैसे 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