将查询的数据不重复的批量插入到B表中

时间:2022-08-04 00:47:59
将sql查询的结果,插入到B表中,因为数据量比较大,所以插入时只想插入B表中没有的数据,怎么写?

insert b select * from a where not exists(select 1 from b where id=a.id)

这条sql语句可以实现 将a表中的数据不重复的插入到b表

我的问题是我数据库中a表是不存在的,他是从其它几个表关联后得到的数据,所以我在项目里(.net项目)用
DataTable ds = new DataTable("aa");
        da.Fill(ds);
 给表起了名字,然后用上边的sql语句,但是不对

还有数据是插入到sqlite数据库中,是不是因为sqlite的语法与sql不同的原因?

11 个解决方案

#1


先将A表查询结果插入到临时表,然后在此基础上插入数据

#2


有一个行为叫insert into,有一种选择叫DISTINCT。

#3


引用 2 楼 yanyuchonglou 的回复:
有一个行为叫insert into,有一种选择叫DISTINCT。


什么啊?

#4


select a.* into #tb from a left join b on a.id=b.id
 where b.id is null
insert b select * from #tb

#5


我是要将sqlserver中查询出来的数据(有多条,数量有时非常大),插入到sqlite中,这样sql语句没法关联啊

#6


该回复于2012-02-14 09:24:45被版主删除

#7


问题还没有解决,大家帮忙看看啊

#8


我的是从sql2005中查询出来的数据,要更新插入到sqlite中

#9


引用 3 楼 rr998 的回复:
引用 2 楼 yanyuchonglou 的回复:
有一个行为叫insert into,有一种选择叫DISTINCT。


什么啊?


select distinct * from 表 

#10


请问你问题解决了吗?怎么解决的?我也遇到了类似的问题。

#11


引用 10 楼  的回复:
请问你问题解决了吗?怎么解决的?我也遇到了类似的问题。


后来用别的方案解决了,没有这样做

你的问题是?

#1


先将A表查询结果插入到临时表,然后在此基础上插入数据

#2


有一个行为叫insert into,有一种选择叫DISTINCT。

#3


引用 2 楼 yanyuchonglou 的回复:
有一个行为叫insert into,有一种选择叫DISTINCT。


什么啊?

#4


select a.* into #tb from a left join b on a.id=b.id
 where b.id is null
insert b select * from #tb

#5


我是要将sqlserver中查询出来的数据(有多条,数量有时非常大),插入到sqlite中,这样sql语句没法关联啊

#6


该回复于2012-02-14 09:24:45被版主删除

#7


问题还没有解决,大家帮忙看看啊

#8


我的是从sql2005中查询出来的数据,要更新插入到sqlite中

#9


引用 3 楼 rr998 的回复:
引用 2 楼 yanyuchonglou 的回复:
有一个行为叫insert into,有一种选择叫DISTINCT。


什么啊?


select distinct * from 表 

#10


请问你问题解决了吗?怎么解决的?我也遇到了类似的问题。

#11


引用 10 楼  的回复:
请问你问题解决了吗?怎么解决的?我也遇到了类似的问题。


后来用别的方案解决了,没有这样做

你的问题是?