sql2008 插入新数据tabel#2,怎么使其中一个字段与tabel#1去重唯一插入

向表 tabel #1插入新数据

怎么使 tabel#2 其中一个字段ssa与 表 tabel #1 字段ssa的值不重复

1个回答

描述不是很清楚,是将 table#2的数据插入到table#1里,还是其它地方的数据插入到table#2里?

如果是table#2的数据插入到table#1里的话

insert into table#1(ssa,ssb,ssc,ssd,sse)
select ssa,ssb,ssc,ssd,sse
from table#2 t1
where not exists (select 1 from table#1 t2 where t1.ssa=t2.ssa)

如果是mysql的话追加一个group by ssa 可以去掉table#2里重复的数据(重复的保留第一条)

sqlserver的话追加

and t1.id in (select min(id) 
from table#2
group by ssa)

其中id 是主键

sqlserver的方式其它数据库应该也都能起效

如果要去重的话,最好还是字段加上唯一索引,不然根据墨菲定律,一定会出现重复数据

Tiarnach
Tiarnach 回复jc-dsa: 修改了回答,可以参考一下
2 个月之前 回复
Tiarnach
Tiarnach 回复jc-dsa: 抱歉,table#2本身有重复的ssa这个情况漏考虑了
2 个月之前 回复
weixin_45123966
jc-dsa 感觉插入 table#1的时候,只对table#2 里面的重复只判断了一次,实际table#2里面还是有重复的
2 个月之前 回复
weixin_45123966
jc-dsa 我描述的有点乱,实际就是你说的这样,table#2的数据插入到table#1里,但是我执行了你这个后,table#2总共有328772行,执行完插入了297446行,我用;with t1(rownum) as ( select row_number () over(PARTITION BY ssa order by ssa) from tabel#1) delete from t1 where t1.rownum>1 select * from tabel#1 又执行了一次,显示table#2剩余294557行,好像还是有2889个重复的加入进去了
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!