将查询结果插入到另一张表的语句怎么写

时间:2022-10-22 00:48:16
将A表的查询结果插入到B表中,
AB表结构不完成相同,B表有个字段“ID”A表中没有,并且B表有约束ID的值不能重复


请问这样的语句怎么写,主要是那个ID字段怎么处理。

12 个解决方案

#1


insert A(cola,colb) select cola,clob from b where ... and not exists(select 1 from A where ID=b.ID)

#2


insert A表(列1,列2。。。)
select 列1,列2。。。) from B表

#3


LZ明明说是将A表的结果插入B表中....



INSERT INTO B(ID, colA, colB)
SELECT NEWID(), colA, colB
FROM A
WHERE.....

#4


 如果ID为自增列..
 insert into A (ID之外的列....) select 列1,列2... from B
 如果ID不为自增列

 select px=identity(int,1,1),列1,列2... into # from B where ....
 insert into A(ID,列1....) select px,列1,列2... from #

#5


select into 和 insert into select 两种表复制语句
select * into destTbl from srcTbl

insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl

以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的。

第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。

第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量
 

#6


引用 5 楼 rockyvan 的回复:
SQL codeselect into 和 insert into select 两种表复制语句
select * into destTbl from srcTbl

insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl

以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的。

第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。

第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了…

同意

#7


引用 4 楼 zhiguo2008 的回复:
SQL code 如果ID为自增列..
 insert into A (ID之外的列....) select 列1,列2... from B
 如果ID不为自增列

 select px=identity(int,1,1),列1,列2... into # from B where ....
 insert into A(ID,列1....) select px,列1,列2... from #



ID列不是自增列。。我试试第二句。

其他人回答的都文不对题呀。
insert into B select * from A


这个语句我知道,但是主要问题是B表那个ID列的处理,ID不能为空也不能重复



#8


引用 4 楼 zhiguo2008 的回复:
SQL code如果ID为自增列..insertintoA (ID之外的列....)select列1,列2...fromB
 如果ID不为自增列selectpx=identity(int,1,1),列1,列2...into#fromBwhere....insertintoA(ID,列1....)selectpx,列1,列2...from#

#9


有自增列都不行,应为你B表中本身就有数据,你都没说B表的ID列到底是什么情况。。。我觉得有点奇怪
可能是我的理解有点问题,等待高手

#10


insert A表(列1,列2。。。)
select 列1,列2。。。) from B表

#11


csdn都分析的很详细,赞一个.

#12


今天用到这个功能了。学习了。谢谢哈哈

#1


insert A(cola,colb) select cola,clob from b where ... and not exists(select 1 from A where ID=b.ID)

#2


insert A表(列1,列2。。。)
select 列1,列2。。。) from B表

#3


LZ明明说是将A表的结果插入B表中....



INSERT INTO B(ID, colA, colB)
SELECT NEWID(), colA, colB
FROM A
WHERE.....

#4


 如果ID为自增列..
 insert into A (ID之外的列....) select 列1,列2... from B
 如果ID不为自增列

 select px=identity(int,1,1),列1,列2... into # from B where ....
 insert into A(ID,列1....) select px,列1,列2... from #

#5


select into 和 insert into select 两种表复制语句
select * into destTbl from srcTbl

insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl

以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的。

第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。

第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量
 

#6


引用 5 楼 rockyvan 的回复:
SQL codeselect into 和 insert into select 两种表复制语句
select * into destTbl from srcTbl

insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl

以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的。

第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。

第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了…

同意

#7


引用 4 楼 zhiguo2008 的回复:
SQL code 如果ID为自增列..
 insert into A (ID之外的列....) select 列1,列2... from B
 如果ID不为自增列

 select px=identity(int,1,1),列1,列2... into # from B where ....
 insert into A(ID,列1....) select px,列1,列2... from #



ID列不是自增列。。我试试第二句。

其他人回答的都文不对题呀。
insert into B select * from A


这个语句我知道,但是主要问题是B表那个ID列的处理,ID不能为空也不能重复



#8


引用 4 楼 zhiguo2008 的回复:
SQL code如果ID为自增列..insertintoA (ID之外的列....)select列1,列2...fromB
 如果ID不为自增列selectpx=identity(int,1,1),列1,列2...into#fromBwhere....insertintoA(ID,列1....)selectpx,列1,列2...from#

#9


有自增列都不行,应为你B表中本身就有数据,你都没说B表的ID列到底是什么情况。。。我觉得有点奇怪
可能是我的理解有点问题,等待高手

#10


insert A表(列1,列2。。。)
select 列1,列2。。。) from B表

#11


csdn都分析的很详细,赞一个.

#12


今天用到这个功能了。学习了。谢谢哈哈