「キャッシュ」テーブルからデータを要約するテーブルを作成しようとしています。集計クエリを数分ごとに実行する予定であるため (cron またはイベントによって、実際には関係ありません)、行の重複を避けるために、サマリー テーブルに既に存在する行を更新する必要があります (私は一意のキーが設定されているため、「キャッシュ」テーブルの値は既存の値と統合されます。
これが私のクエリです:
INSERT INTO `ReportsSummary`
(`date`,
`txtID`,
`webID`,
`GEO`,
`OSS`,
`impressions`,
`clicks`)
SELECT DATE_FORMAT(date ,'%Y-%m-%d'),txtID,webID, GEO, OSS,
SUM( if(actionType = '1',1,0) ) as add_impressions,
SUM( if(actionType = '2',1,0) ) as add_clicks
FROM `CacheReports` as t GROUP BY txtID,webID,GEO,OSS
ON DUPLICATE KEY UPDATE
impressions = impressions + (`t`.`add_impressions`),
clicks = clicks + (`t`.`add_clicks`);
乾杯