导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

将数据插入到一个表中,如果数据有重复自动跳过。如何实现?

Dugu_Niu 2003-12-12 10:23:52
我写了存储过程,用来把 TABLE1 和 TABLE2 两个表中的数据插入到temp表中
三个表的主键、索引都不相同

如果实现数据有重复(也就是违反了temp表中的主键约束)就自动跳过?
大虾帮忙!thanks

我的SQL语句如下:

INSERT INTO [temp]
(id, name, sex)
SELECT id, name, sex
FROM TABLE1

INSERT INTO [temp]
(id, name, sex)
SELECT id, name, sex
FROM TABLE2
...全文
36 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzx760815 2003-12-12
不好意思﹐剛才搞錯了﹗應該是﹕
insert [temp]
select id,name,sex from table1
where id not in(select id from temp)
or name not in(select name from temp)
or sex not in(select sex from temp)
union
select id,name,sex from table2
where id not in(select id from temp)
or name not in(select name from temp)
or sex not in(select sex from temp)
回复
xzx760815 2003-12-12
insert [temp]
select id,name,sex from table1
where id,name,sex not in(select id,name,sex from temp)
union
select id,name,sex from table2
where id,name,sex not in(select id,name,sex from temp)

回复
Dugu_Niu 2003-12-12
又试用了大力的
insert [temp]
select id,name,sex table1
union all
select id,name,sex table2
方法,还是不行
同上面的结果一样
回复
victorycyz 2003-12-12
select id,name,sex into #t from table1
insert into #t select id,name,sex from table2

insert into [temp]
select distinct a.*
from #t a left join [temp] b
on a.id=b.id and a.name=b.name and a.sex=b.sex
where b.id is null

drop table #t
回复
Dugu_Niu 2003-12-12
我用了(马甲)的方法,
没有成功,他还是提示 违反了temp表中的主键约束 ,没有实现自动跳过
回复
wzh1512 2003-12-12
不好意思,上面的写漏了:
insert into [temp]
select id,name,sex from table1
union
select id,name,sex from table2
回复
Dugu_Niu 2003-12-12
在我的Temp表中id,name,sex都是索引
回复
pengdali 2003-12-12
insert temp
select * from (
select id,name,sex table1
union
select id,name,sex table2)
where id not in (select id from temp)
回复
pengdali 2003-12-12
insert [temp]
select id,name,sex table1
union all
select id,name,sex table2
回复
wzh1512 2003-12-12
如果table1中没有重复记录,table2中也没有重得记录,也可以用:
insert into [temp]
select * from
(
select id,name,sex table1
union
select id,name,sex table2
) tep

回复
wzh1512 2003-12-12
insert into [temp]
select distinct * from
(
select id,name,sex table1
union
select id,name,sex table2
) tep
回复
txlicenhe 2003-12-12
INSERT INTO [temp]
(id, name, sex)
SELECT id, name, sex
FROM TABLE1
where id not in (select id from [temp])

INSERT INTO [temp]
(id, name, sex)
SELECT id, name, sex
FROM TABLE2
where id not in (select id from [temp])

回复
xzx760815 2003-12-12
pengdali那個有學問題﹕
既然id,name,sex三個為主鍵值﹐那如果只是id相同那不一定就是相同的記錄﹗﹗﹗﹗﹗﹗
所以應該是id,mname,sex都相同才表示是相同記錄﹗﹗﹗
回复
ghosthjt 2003-12-12
where 判断复重字段 not in(select 判断复重字段 from table)
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告