根据其他数据库mysql从表中删除

时间:2019-02-06 19:24:42

标签: mysql sql

我有两个具有相同结构的MySQL数据库。但是,内容有所不同:DB1每天都接收最近10天的最新数据。 DB2包含有关过去几年的数据。

我要完成以下任务:

步骤1: 如果db1.t1的column1中存在column1,则从db2.t1中删除

步骤2: 将所有内容从db1.t1插入db2.t1

1 个答案:

答案 0 :(得分:1)

  

步骤1:如果db1.t1的column1中存在column1,则从db2.t1中删除

     

步骤2:将所有内容从db1.t1插入db2.t1

您似乎正在尝试将db1.t1中的数据合并db2.t1中。如果是这样,那么一种解决方案是使用mysql INSERT ... ON DUPLICATE KEY UPDATE语句。这使您可以在执行INSERT查询时处理重复项:在您的用例中,似乎可以更新源表中的每一列。

首先要解决这个问题,除非column1PRIMARY KEY,否则您需要在目标表的UNIQUE上设置column1约束(在您的用例中,您最好也将其添加到源表中):

ALTER TABLE db2.t1 ADD CONSTRAINT t1_bk UNIQUE (column1);

然后:

INSERT INTO db2.t1 t_target
SELECT t_source.* FROM db1.t1 t_source
ON DUPLICATE KEY UPDATE 
    t_target.column2 = t_source.column2,
    t_target.column3 = t_source.column3,
    ...
;