sql >> Databasteknik >  >> RDS >> Mysql

MySQL PÅ DUBLIKATNYCKELUPPDATERING medan du infogar en resultatuppsättning från en fråga

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




  1. MySQL Tutorial – Förstå sekunderna bakom Master Value

  2. Hämta koordinaterna för MySQL-punkttypen

  3. Hur man infogar json array i mysql databas

  4. MySQL Ta bort dubbletter av kolumner på Left Join, 3 tabeller