2015-01-13 78 views
0

我昨天做了一個mystake並刪除了mysql表中的一些行(我設置了LIMIT 2000的運氣)。如何合併兩個表(包括主鍵和範圍限制)

現在我想使用備份再次插入刪除的行。我:

tb_production:

id (primary key) col1  col2 
-------------------------------- 
    1    data  data 
    2    data  data 
    6    data  data 
    9    data  data 

正如你看到的,有失蹤的行。 現在我想從備份表中缺少的行插入(以上)的生產表:

tb_backup:

id (primary key) col1  col2 
    -------------------------------- 
     1    data  data 
     2    data  data 
     3    data  data 
     4    data  data 
     5    data  data 
     6    data  data 
     7    data  data 
     8    data  data 
     9    data  data 

我已經在這裏找到了一個很好的答案上計算器(How can I merge two MySQL tables?),給出的答案:

INSERT IGNORE INTO table_1 SELECT * FROM table_2;

我不想再做另一個錯誤,所以我問你:

如何從備份表中的行合併到生產表,沒有生產表覆蓋現有行並再次使用LIMIT 2000

+0

我不是你的問題明確....你有你的備份數據? –

+0

@ Vamshi.goli是的,我得到了一個2周的數據庫備份,比我猜的都好。我想使用表中的行從那裏插入正在運行的數據庫。 – lickmycode

+0

現在你想把這些數據庫插入到現有的數據庫中吧!!!!!!!!! –

回答

0

請嘗試以下查詢

INSERT INTO tb_production(id,col1,col2) 
    SELECT bkp.id,bkp.col1,bkp.col2 FROM tb_backup bkp LEFT JOIN tb_production prd 
    ON bkp.id=prd.id WHERE prd.id IS NULL ORDER BY bkp.id LIMIT 2000;