Mysql SQL查询连接两个表,如果缺少记录,则添加新记录

Mysql SQL查询连接两个表,如果缺少记录,则添加新记录,mysql,sql,Mysql,Sql,我有两个表,都有相同的数据: IP address | count 我需要将这两个表合并成一个新表,其中包含来自两个原始表的数据 如果两个表中都有匹配的记录,则应添加它们的计数 如果有一条记录只存在于一个表中,它将被复制到新表中 让第一个表称为ip_data_Janur,第二个表称为ip_data_Junur,我尝试创建的表是ip_data_yearly。提前感谢。如果IP\u Data\u Yearly表为空,则带有按IP聚合计数的子查询的INSERT应该可以: INSERT INTO

我有两个表,都有相同的数据:

IP address | count
我需要将这两个表合并成一个新表,其中包含来自两个原始表的数据

  • 如果两个表中都有匹配的记录,则应添加它们的计数
  • 如果有一条记录只存在于一个表中,它将被复制到新表中

让第一个表称为ip_data_Janur,第二个表称为ip_data_Junur,我尝试创建的表是ip_data_yearly。提前感谢。

如果
IP\u Data\u Yearly
表为空,则带有按IP聚合计数的子查询的
INSERT
应该可以:

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

如果
IP\u Data\u Yearly
表为空,则带有按IP聚合计数的子查询的
INSERT
应执行以下操作:

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

第一次仅插入新ip地址(计数从零开始)

第二次更新计数

update ip_data_yearly y 
set count= count + 
  (select count(j.ip_adress) from jan_table where j.ip_adress=y.ip_adress);


第3次在所有月份执行此操作第1次仅插入新ip地址(计数从零开始)

第二次更新计数

update ip_data_yearly y 
set count= count + 
  (select count(j.ip_adress) from jan_table where j.ip_adress=y.ip_adress);

第三,在所有月份都这样做

您可以使用 我假设IP_地址上的索引是唯一的。。然后

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_地址上的索引是唯一的。。然后

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;

您可以使用exists子句…您可以使用exists子句。。。