从一张表中查询数据插入到另一张表中?

时间:2022-11-30 18:03:18
现在有两个表,表A有两个字段主键ida和字段a,其中ida为主键是自动生成的,
表B有idb和b两个字段,idb是主键也是自动生成的,其中表A中的a字段和表B中的b字段类型相同,
现在我想把表A的数据插入到表B中,
insert into B(b) select a from A
但是会报错,因为B中的自动生成主键没有插入,怎么写可以让A中的a字段插入到B中的b字段中,同时也让B中的主键idb自动生成出来?

12 个解决方案

#1


insert into B
 select a from A

#2


你这样写是对的,至于没插入进去应该是因为你表字段设置不对,没有设置成自增列吧

#3


语句是对的,出错是因为自增长主键没法插入  你不要插主键就是了。

#4


引用 3 楼 china_yuanli 的回复:
语句是对的,出错是因为自增长主键没法插入  你不要插主键就是了。
难道不能让主键自动生成吗

#5


[code=SQL]
create table #A(ida int identity(1,1),a nvarchar(1))
create table #b(idb int identity(1,1),b nvarchar(1))
insert #A(a) select '1' union all
select '2' union all
select '3' union all
select '4' union all
select '5' union all
select '6' 

insert #B(b) select a from #A

select * from #B
[code=SQL]

按你的寫法。。沒問題啊。。應該系在idb設個identity(1,1)

#6


你写的语法并没有问题.请检查自动增长列设置是否正确

#7


insert #B select  a from tablename

select distinct * into #temp from tablename;
delete  from #temp;

#8


引用 5 楼 liang145 的回复:
[code=SQL]
create table #A(ida int identity(1,1),a nvarchar(1))
create table #b(idb int identity(1,1),b nvarchar(1))
insert #A(a) select '1' union all
select '2' union all
select '3' union all
……
我的主键类型不是自增长的,是uniqueidentifier类型

#9


insert into B(idb,b) select newid(),a from A

#10


uniqueidentifier类型插入时要使用NewID()函数

#11


uniqueidentifier类型
当然不能自动增长。


create table #A(ida int identity(1,1),a nvarchar(1))
create table #b(idb UNIQUEIDENTIFIER,b nvarchar(1))
insert #A(a) 
select '1' union all
select '2' union all
select '3' union all
select '4' union all
select '5' union all
select '6'  

insert #B(b) select a from #A

select * from #B


idb b
----    ----
NULL 1
NULL 2
NULL 3
NULL 4
NULL 5
NULL 6

#12


uniqueidentifier和自增ID插入方法是不一样的

#1


insert into B
 select a from A

#2


你这样写是对的,至于没插入进去应该是因为你表字段设置不对,没有设置成自增列吧

#3


语句是对的,出错是因为自增长主键没法插入  你不要插主键就是了。

#4


引用 3 楼 china_yuanli 的回复:
语句是对的,出错是因为自增长主键没法插入  你不要插主键就是了。
难道不能让主键自动生成吗

#5


[code=SQL]
create table #A(ida int identity(1,1),a nvarchar(1))
create table #b(idb int identity(1,1),b nvarchar(1))
insert #A(a) select '1' union all
select '2' union all
select '3' union all
select '4' union all
select '5' union all
select '6' 

insert #B(b) select a from #A

select * from #B
[code=SQL]

按你的寫法。。沒問題啊。。應該系在idb設個identity(1,1)

#6


你写的语法并没有问题.请检查自动增长列设置是否正确

#7


insert #B select  a from tablename

select distinct * into #temp from tablename;
delete  from #temp;

#8


引用 5 楼 liang145 的回复:
[code=SQL]
create table #A(ida int identity(1,1),a nvarchar(1))
create table #b(idb int identity(1,1),b nvarchar(1))
insert #A(a) select '1' union all
select '2' union all
select '3' union all
……
我的主键类型不是自增长的,是uniqueidentifier类型

#9


insert into B(idb,b) select newid(),a from A

#10


uniqueidentifier类型插入时要使用NewID()函数

#11


uniqueidentifier类型
当然不能自动增长。


create table #A(ida int identity(1,1),a nvarchar(1))
create table #b(idb UNIQUEIDENTIFIER,b nvarchar(1))
insert #A(a) 
select '1' union all
select '2' union all
select '3' union all
select '4' union all
select '5' union all
select '6'  

insert #B(b) select a from #A

select * from #B


idb b
----    ----
NULL 1
NULL 2
NULL 3
NULL 4
NULL 5
NULL 6

#12


uniqueidentifier和自增ID插入方法是不一样的