黑马程序员技术交流社区

标题: 一个sql问题 [打印本页]

作者: 刘建素    时间: 2012-7-20 10:41
标题: 一个sql问题
有两张表比如a,b表两张表的结构相同 表字段都是id,name,age 如何将a表中b表没有的数据插入b表中。插入数据不能重复,不用考虑id是主键自增的问题 比如a表有条数据 为 2,张三,20,b有条数据为1,张三,20 则a表这条数据也要插入b表中。
作者: 许庭洲    时间: 2012-7-20 10:49
insert  into  a   select  *  from  b  where  a .id<>b .id;
作者: 刘建素    时间: 2012-7-20 11:00
不对的跟ID没什么关系 这样插入的话会有重复出现的。
作者: 刘建素    时间: 2012-7-20 11:18
id不是主键,也非自增  比如 a表有条数据为1,张三,20 b表有条数据 为 1,王五,20  你这样写的话  这条数据就会被过滤掉不会插入b中.
作者: 刘秋菊    时间: 2012-7-20 12:54
insert into b select * from (select * from a where a.id not in (select a.id from a inner join b on a.id = b.id and a.fname = b.fname and a.age = b.age ))

作者: 刘建素    时间: 2012-7-20 13:09
刘秋菊 发表于 2012-7-20 12:54
insert into b select * from (select * from a where a.id not in (select a.id from a inner join b on a ...

试了下这样应该是正确的 tk.
作者: 刘建素    时间: 2012-7-20 13:52
刘秋菊 发表于 2012-7-20 12:54
insert into b select * from (select * from a where a.id not in (select a.id from a inner join b on a ...

在网上查了半天使用except关键字好像更简单
insert into b select * from a except select * from b




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2