Problemet er, at du i duplikatnøglesætningerne ikke kan bruge nogen grupperingsfunktioner (såsom COUNT
. Der er dog en nem måde at undgå dette problem på. Du tildeler bare resultatet af COUNT(crime_id)
kalde til en variabel, som du kan brug i duplikatnøglesætningerne. Din insert-sætning ville så se sådan ud:
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;
Jeg har oprettet en SQL Fiddle, der viser dig, hvordan den virker:SQL-Fiddle
Du kan også bruge UPDATE crimecount = VALUES(crimecount)
og ingen variabler:
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);
Se SQL-Fiddle-2