日期:2014-05-17  浏览次数:20448 次

sql2000 插入不重复的数据
表A

nameid  name  age  
 1       王   18
 2       张   20
 3       李   15
 4       周   19

表B
nameid   name  age
1        王    18
3        李    15

把表A数据插入表B, nameid重复的就不插入

有没有比较有效率的方法

------解决方案--------------------
IF not EXISTS(SELECT id FROM A) insert ....
------解决方案--------------------

insert into 表B(nameid,name,age)
select nameid,name,age
from 表A a
where not exists(select 1 from 表B b where a.nameid=b.nameid)

------解决方案--------------------
或者:
insert into 表B(nameid,name,age)
select nameid,name,age
from 表A a
where nameid not in (select nameid from 表B)


上面的方法会更好,效率更高。使用in函数一般效率都比较低
------解决方案--------------------
启用自动标识
------解决方案--------------------
引用:

insert into 表B(nameid,name,age)
select nameid,name,age
from 表A a
where not exists(select 1 from 表B b where a.nameid=b.nameid)


这个正确!当然也可以用以下方法(这个效率不一定高哦!只是提供一种思路):
insert into 表B
select * from (select 表A.*,表B.nameid as Bnameid from 表A a left join 表B on a.nameid=b.nameid) as AA where nameid<>Bnameid