我有两个表,都有相同的数据:
IP address | count
我需要将这两个表组合成一个新表,其中包含两个原始表中的数据。
- 如果两个表中都有匹配的记录,则应添加它们的计数。
- 如果有一条记录只存在于一个表中,它将被复制到新表中。
让第一个表称为 ip_data_january,第二个称为 ip_data_february,我要创建的表是 ip_data_yearly。提前致谢。
第一次只插入新的 IP 地址(计数从零开始)
insert into ip_data_yearly (ip_adress, count)
(select distinct ip_address, '0' from jan_table
where ip_addess not in (select ip_adress from ip_data_yearly);
第二次更新计数
update ip_data_yearly y
set count= count +
(select count(j.ip_adress) from jan_table where j.ip_adress=y.ip_adress);
..
第三次这样做所有月份
您可以使用ON DUPLICATE KEY UPDATE I Assume Unique index on IP_Address .. 然后
INSERT INTO ip_data_yearly (ip_adress)
SELECT IP_Address FROM IP_Data_January
UNION ALL SELECT IP_Address FROM IP_Data_February
ON DUPLICATE KEY UPDATE `count`=`count`+1;
如果IP_Data_Yearly
表为空,则INSERT
使用按 IP 聚合计数的子查询应该可以解决问题:
INSERT INTO IP_Data_Yearly
SELECT IP_Address, SUM(Count)
FROM (
SELECT IP_Address, Count FROM IP_Data_January
UNION ALL SELECT IP_Address, Count FROM IP_Data_February
) IPCombined
GROUP BY IP_Address