2 dramagame dramagame 于 2014.11.26 18:02 提问

sql语句问题。求语句,求帮忙

有A B两张表里面的字段列名完全一致只有数据不一致。。现在要把A B两张中不同数据插入到A表中。怎么做

4个回答

chenliang_cn_0
chenliang_cn_0   2014.11.26 18:58

insert语句后面加where约束呗

hjkNet
hjkNet 回复dramagame:
3 年多之前 回复
dramagame
dramagame 能详细点吗。你就假如只有两个字段。帮我写写好吗?谢谢
3 年多之前 回复
dramagame
dramagame 能详细点吗。你就假如只有两个字段。帮我写写好吗?谢谢
3 年多之前 回复
hqshaozhu
hqshaozhu   2014.11.26 20:01

求差集,oracle提供差集函数(minus),但是mysql就没有,所以得根据数据库区别对待。
http://www.cnblogs.com/shengtianlong/archive/2010/12/03/1895346.html

macsnow
macsnow   2014.11.26 20:23

提供两种思路: 个人建议创建视图要好一些,因为直接插入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

u013341274
u013341274   2014.11.26 22:07

假设有三个字段,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) ;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!