问题描述
- sql语句问题。求语句,求帮忙
-
有A B两张表里面的字段列名完全一致只有数据不一致。。现在要把A B两张中不同数据插入到A表中。怎么做
解决方案
insert语句后面加where约束呗
解决方案二:
求差集,oracle提供差集函数(minus),但是mysql就没有,所以得根据数据库区别对待。
http://www.cnblogs.com/shengtianlong/archive/2010/12/03/1895346.html
解决方案三:
提供两种思路: 个人建议创建视图要好一些,因为直接插入B中的数据到A表中可能会出现主键冲突
方法1 : insert into A(field1,field2,....) select field1, field2 , ... from B where fieldx not in ( select fieldx from A ) ;
/* 说明: field1,field2, fieldx 代表A、B两张表中相应的字段*/
方法2 : 建议创建一个视图 view eg: create view as select * from A union select * from B
解决方案四:
假设有三个字段,field1是主键:
insert into table1(field1, field2, field3) select field1, field2, field3 from table2 t2 where not exists (select 1 from table1 t1 where t1.field1=t2.filed1) ;
如果没有主键,就会比较麻烦一些:
insert into table1(field1, field2, field3) select field1, field2, field3 from table2 t2 where not exists (select 1 from table1 t1 where t1.field1=t2.filed1 and t1.field2=t2.filed2 and t1.field3=t2.filed3) ;