首页 新闻 搜索 专区 学院

如何实现两个表数据的拷贝,同时过滤过重复数据

0
悬赏园豆:30 [已关闭问题]

现有两个表:表1(公共库),表2(私有库)
问题1.如何批量处理从公共库中选择一组ID字符串插入私有库中,注意在插入时、如果私有库中已存在“ID字符串”某一条记录时就不要在插入了

表1----结构如下(ID为自增)及记录(记录我是随便加的)
ID   |  Title
--------------
1    | 标题5
4    | 标题3
6    | 标题6
7    | 标题8
13   | 标题99

表2 -------结构如下(ID为表1 ID)
ID   | Title
---------------
4    | 标题3
7    | 标题8

操作:如果我选择字表1的字符串为“1,4,7,13”插入到表2时,结果应为如下

ID   | Title
---------------
4    | 标题3
7    | 标题8
1    | 标题5
13   | 标题99

我现在实现的语句是插入,但是如何来过滤掉重复值
INSERT INTO 表2 (ID,Title) SELECT ID,Title  FROM [PublicProInfo]

问题补充: 问题已经解决,我现在贴出正确的答案,INSERT INTO 表2 (ID,Title) SELECT ID,Title FROM [表1] where ID IN (1,12,13,15,3) and not exists(select top 1 * from 表2 where 表2.id=表1.id)
土农民的主页 土农民 | 初学一级 | 园豆:19
提问于:2010-04-20 13:59
< >
分享
其他回答(1)
0

select * from test
--循环插入相同地数据

declare @index int;
set @index = 0;
while(@index <= 5)
begin
    insert test values(
    'test','test')
    set @index = @index + 1
end
--查询相同地数据的唯一标示id,分组查询最小id=distinct
select min(id) as id,name,pwd from test group by name,pwd
--删除id不在这个范围的数据
delete from test where  id not in(select min(id) as id from test group by name,pwd)

lovemc | 园豆:13 (初学一级) | 2010-04-20 16:13
0

INSERT INTO 表2 (ID,Title) SELECT ID,Title  FROM [PublicProInfo] where id not in (select id from 表2)

如果是sql2008,可以用merge语法,这个比较简单。

清海扬波 | 园豆:777 (小虾三级) | 2010-04-20 20:15
谢谢您
支持(0) 反对(0) 土农民 | 园豆:19 (初学一级) | 2010-04-21 09:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册