select Insert into和Insert into select的区别
我现在是想把A表中的数据复制到B表中,但需要先看看B表中是否存在上条数据,不存在才插入,应该如何写呢?假如A表和B表中都有a,b两个字段OleDbDataReaderdr...
我现在是想把A表中的数据复制到B表中,但需要先看看B表中是否存在上条数据,不存在才插入,应该如何写呢?
假如A表和B表中都 有a,b两个字段
OleDbDataReader dr1 = hongli.DBExecuteReader("select * from [keywords] where ykeywords='" + getwords[i].Split('=')[0] + "' and nkeywords='" + getwords[i].Split('=')[1] + "'");
if (!dr1.Read())
{
hongli.DBExecuteNonQuery("Insert into [keywords](ykeywords,nkeywords)values('" + getwords[i].Split('=')[0] + "','" + getwords[i].Split('=')[1] + "')");
}
如何把这整合成一句SQL,现在是执行两次,整合后是不是会效率高一点 展开
假如A表和B表中都 有a,b两个字段
OleDbDataReader dr1 = hongli.DBExecuteReader("select * from [keywords] where ykeywords='" + getwords[i].Split('=')[0] + "' and nkeywords='" + getwords[i].Split('=')[1] + "'");
if (!dr1.Read())
{
hongli.DBExecuteNonQuery("Insert into [keywords](ykeywords,nkeywords)values('" + getwords[i].Split('=')[0] + "','" + getwords[i].Split('=')[1] + "')");
}
如何把这整合成一句SQL,现在是执行两次,整合后是不是会效率高一点 展开
4个回答
展开全部
insert into相当于自定义数据数据插入,而insert into select则相当于根据其他表的数据插入到被插入的表中。
比如,有如下要被插入的表,表名test ,字段名为id 和 name
用insert into的方法
insert into test values (1,'张三')
如果用insert into select的方法
insert into test select 1,'张三'
或者所插入的数据有其他表的来源:
insert into test select id,name from 其他表
展开全部
select * into new_table from old_table
要求new_table不存在
insert into new_table
select * from old_table
要求new_table存在
要求new_table不存在
insert into new_table
select * from old_table
要求new_table存在
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量
2.SELECT INTO FROM语句
语句形式为:SELECT vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中
若使要实现你所要的功能,为什么不使用exists呢?
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量
2.SELECT INTO FROM语句
语句形式为:SELECT vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中
若使要实现你所要的功能,为什么不使用exists呢?
更多追问追答
追答
INSERT INTO 表1
(a,b)
select a,b from 表2 where not exists(select * from 表1 where 表1.a=表2.a and 表1.b=表2.b)
测试了下,可以
追问
for (int i = 0; i < getwords.Count; i++) {
hongli.DBExecuteNonQuery("Insert into [keywords](ykeywords,nkeywords)values('" + getwords[i].Split('=')[0] + "','" + getwords[i].Split('=')[1] + "')"); }
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
id假设为A,B表主键
insert into B(a, b) select a,b from A where id not in (select id from B);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询