两种方式实现
- Replace into
- Insert into on duplicate key update
第一种replace into关键词
REPLACE INTO 表名(列名1, 列名2, ..., 列名n) VALUES (值1, 值2, ..., 值n);
第二种Insert into on duplicate key update
INSERT INTO 表名 (列名1, 列名2, ..., 列名n)查询其他表数组作为数据或者直接写值 ON DUPLICATE KEY UPDATE 列名=VALUES(列名)
//示例
INSERT INTO tj_stat_date_jy_core (cur_day,channel,sub_channel,package,dev_num,app_version,adduser,upuser,aso_num)
SELECT
'{$cdate}' as cur_day,
t.channel as channel,
t.sub_channel as sub_channel,
t.package as package,
t.dev_num as dev_num,
t.app_version as app_version,
IFNULL(t.adduser,0) AS adduser,
IFNULL(t.upuser,0) AS upuser,
IFNULL(t.aso_num,0) AS aso_num
FROM {$db}.`tj_stat_date_user` t
WHERE t.`day` ='{$cdate}'
GROUP by `cur_day`,channel,sub_channel,package,dev_num,app_version
ON DUPLICATE KEY UPDATE adduser=VALUES(adduser),upuser=VALUES(upuser),aso_num=VALUES(aso_num)