使用过程创建备份表

时间:2015-08-10 07:04:07

标签: mysql stored-procedures

假设我有两个表t1和一个结构相同的表bak_t1。表bak_t1已经有一些来自t1的行。现在我想创建一个MySQL存储过程执行时只插入t1bak_t1的那些行,这些行将留在bak_t1上,并且不会重新插入先前插入的行。

1 个答案:

答案 0 :(得分:1)

使用INSERT INTO .. SELECT FROM

使用如下所示的EXISTS构造
insert into bak_t1
select * from t1 where not exists (
select 1 from bak_t1 where some_id_column <> t1.some_id_column);

您也可以将LEFT JOIN用于此目的,例如

insert into bak_t1
select t1.* from t1 
left join bak_t1 where t1.some_id_column = bak_t1.some_id_column
where bak_t1.some_column is null;