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