Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИРАН КЛЮЧ, докато вмъквате набор от резултати от заявка

Проблемът е, че в дублиращите се ключови клаузи не можете да използвате никакви функции за групиране (като 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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP - извличане на подготвен stmt в клас:Класът за фатална грешка не е намерен

  2. Никога да не изтривате записи? Добра идея? Обичайно?

  3. Достъпът до Java JDBC е отказан на потребителя

  4. PHP + MySql + Съхранени процедури, как да получа достъп до изходяща стойност?

  5. MySQL Дублирана грешка с ALTER IGNORE TABLE