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