問題は、重複するキー句では、グループ化関数(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フィドルを作成しました: 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 を参照してください。