Masalahnya adalah bahwa dalam klausa kunci duplikat Anda tidak dapat menggunakan fungsi pengelompokan apa pun (seperti COUNT
. Namun, ada cara mudah untuk mengatasi masalah ini. Anda cukup menetapkan hasil COUNT(crime_id)
panggilan ke variabel, yang Anda bisa digunakan dalam klausa kunci duplikat. Pernyataan sisipan Anda kemudian akan terlihat seperti ini:
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;
Saya telah membuat SQL Fiddle yang menunjukkan cara kerjanya:SQL-Fiddle
Anda juga dapat menggunakan UPDATE crimecount = VALUES(crimecount)
dan tidak ada variabel:
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);
Lihat SQL-Fiddle-2