Problemet är att du i dubblettnyckelsatserna inte kan använda några grupperingsfunktioner (som COUNT
. Det finns dock en enkel väg runt detta problem. Du tilldelar bara resultatet av COUNT(crime_id)
anropa en variabel som du kan använd i dubblettnyckelsatserna. Ditt infogningsuttryck skulle då se ut så här:
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;
Jag har skapat en SQL-fiol som visar hur den fungerar:SQL-fiol a>
Du kan också använda UPDATE crimecount = VALUES(crimecount)
och inga 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