如何使用INSERT语句实现一个简单问题,在线等待

lonaerd 2003-08-25 12:10:20
表A: NAME,TITLE,CONTENT,BACKDESC,OTHER
表B: A1,A2,A3,A4,A5,A6,A7,A8,A9,A10

问题:如何用insert into ....select的方式从表A里面读数据插入到表B里面?问题是两个表的字段数量不一样;

其实因为我要求很多不同的表统一导数据到一个字段数量足够多的表里进行处理,所以才会遇到这个问题
...全文
82 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-08-25
  • 打赏
  • 举报
回复
insert B (A1,A2,...) Select F1,F2,... from A
pengdali 2003-08-25
  • 打赏
  • 举报
回复
insert 表B (A1,A2,A3,A4,A5) select NAME,TITLE,CONTENT,BACKDESC,OTHER from 表a

如果有不允许为空的:

insert 表B (A1,A2,A3,A4,A5,a6) select NAME,TITLE,CONTENT,BACKDESC,OTHER,'常量' from 表a
pengdali 2003-08-25
  • 打赏
  • 举报
回复
insert 表B (A1,A2,A3,A4,A5) select NAME,TITLE,CONTENT,BACKDESC,OTHER from 表a

如果有不允许为空的:

insert 表B (A1,A2,A3,A4,A5,a6) select NAME,TITLE,CONTENT,BACKDESC,OTHER,'常量' from 表a
j9988 2003-08-25
  • 打赏
  • 举报
回复
写一个存储过程来执行。
create proc proc1(@tabname varchar(20))
as
begin
declare @sqlstr varchar(1000),@n int
set @sqlstr='insert table2('
select @n=count(*) from syscolumns where id=object_id(@tabname)
select @sqlstr=@sqlstr+name+',' from syscolumns where id=object_id('table2') and colid<=@n
set @sqlstr=left(@sqlstr,len(@sqlstr)-1)+') select * from '+@tabname
exec(@sqlstr)
end

执行:
exec proc1 'table1'
spiketang 2003-08-25
  • 打赏
  • 举报
回复
up
Ianlan 2003-08-25
  • 打赏
  • 举报
回复
insert into B(A1,A2,A3,A4,A5) select NAME,TITLE,CONTENT,BACKDESC,OTHER FROM A
hjb111 2003-08-25
  • 打赏
  • 举报
回复
insert into 表B(A1,A3,A4,A6,A10) select * from 表A

A1,A3,A4,A6,A10中对表A中对应相等的字段!
lfangxiao 2003-08-25
  • 打赏
  • 举报
回复
应该只需要把相应的数据字段对应就可以了:

Insert into 表A
Select A1,A2,A3,A4,A5+A6 From 表B

不过需要注意一下数据类型要统一
97866 2003-08-25
  • 打赏
  • 举报
回复
Insert Into B Select NAME As A1,TITLE as A2,CONTENT As A3,BACKDESC As A4,
OTHER As A5,' ' As A6,' ' As A7,' ' As A8,' ' As A9,' ' As A10
From A
lonaerd 2003-08-25
  • 打赏
  • 举报
回复
j9988(j9988) 解决了我的问题,谢谢!!!!!

lonaerd 2003-08-25
  • 打赏
  • 举报
回复
非常感谢各位高手,不过各位有点误解我的意思了,再次说明一下条件:

有很多表A表,字段名都不知道,但字段数量都小于20,类型都是VARCHAR,我现在要求把A表的数据都放到B表,不能insert into B(A1,A2,A3,A4,A5) select NAME,TITLE,CONTENT,BACKDESC,OTHER FROM A,因为我没法写A表的字段名,有很多A表啊,这就是我的难点。
TaoGeGe 2003-08-25
  • 打赏
  • 举报
回复
其实因为我要求很多不同的表统一导数据到一个字段数量足够多的表里进行处理,所以才会遇到这个问题
-------------------------------------------------
這個問題其實不很復雜,如果智能化要求不很高的話:
1、建一個臨時表
2、向這個表追加對應的字段
3、以你指定的關系向臨時表的對應字段填值(方法上面幾個仁兄說過了)
CrazyFor 2003-08-25
  • 打赏
  • 举报
回复
insert into B(A1,A2,A3,A4,A5) select NAME,TITLE,CONTENT,BACKDESC,OTHER FROM A

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧