补充说明一下:
A,B结构一样,且都没有主键,A表里包含新旧数据,B表每天只要A表中新增的数据,我用SQL插入语句,将A表插入B表,每次都是重复插入,很郁闷,请高手指点吖!
如何将A表中的数据插入到B表,而且不重复插入?
答案:4 悬赏:0 手机版
解决时间 2021-02-12 09:22
- 提问者网友:留有余香
- 2021-02-11 11:55
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-02-11 13:04
insert into 表B select * from(
select * from 表A
except
select * from 表A intersect select * from 表B
)
前提是表B和表A的结构完全相同,当然如果把select * 换成别的,那结构不一样也可以控制,用于将存在于表A中,但不存在于表A中的数据插入表B
效率比 not in 的写法要高很多(60万条数据大概高个五十多倍)
select * from 表A
except
select * from 表A intersect select * from 表B
)
前提是表B和表A的结构完全相同,当然如果把select * 换成别的,那结构不一样也可以控制,用于将存在于表A中,但不存在于表A中的数据插入表B
效率比 not in 的写法要高很多(60万条数据大概高个五十多倍)
全部回答
- 1楼网友:长青诗
- 2021-02-11 15:23
看你是不是违背了实体完整性。就是表中不能有任意2行是相同的。具体你举个列子可能大家更能帮到你。
- 2楼网友:鸽屿
- 2021-02-11 14:11
如果仅仅只有一列如何判断是重复数据?
因为你将数据插入到b表的时候,是不是得知道应该插入哪条数据到b表呢?
所以你这问题给的貌似有问题,我会mssql,用mssql弄个类似的给你,仅仅一列哈
select distict a3 from a --这样可以去除重复的,然后插入b表,再通过a3更新,关键字distinct去重复,也可以group by分组去重复
- 3楼网友:冷風如刀
- 2021-02-11 13:57
insert into B
select fieldname from A
where not exists (select * from B where A.fieldname =b.fieldname)
;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯