有两个表A和B结构完全一样,第一个字段都是自增类型,请问怎么把B里的数据全部插入A中(B中除第一个字段)??? ( 积分: 50 )

  • 主题发起人 主题发起人 guhejianxin
  • 开始时间 开始时间
G

guhejianxin

Unregistered / Unconfirmed
GUEST, unregistred user!
就是把B中的除第一个自增字段以外的所有数据都对应插入A中,由于表中字段比较多,逐个列举放在SELECT后面显的过长,请问有什么办法,不用列举也能实现???
 
就是把B中的除第一个自增字段以外的所有数据都对应插入A中,由于表中字段比较多,逐个列举放在SELECT后面显的过长,请问有什么办法,不用列举也能实现???
 
insert A(A2,A3,A4)
select B2,B3,B4 from B

其中a1,和b1,沒有出現,因為他們是自增的

對不住,沒有看清題目,最簡單的方法是花錢請別人幫你列,最簡單!
[^]
 
简单,做个DTS数据转换包,一切就OK 了!
 
做个视图了,勾勾就行了,不会累吧
 
insert A(A2,A3,A4)
select B2,B3,B4 from B
 
有发这个帖子的时间字段就列完了。
 
就是啊,能有多少字段啊,好像也没有多好的办法,我也遇到过这种问题[:)]
 
肯定要列出字段名
 
列出字段名吧,编程本来就是个麻烦的事啊。也许还有什么高招,我也在关注中。。。
select 出来后一个一个插入,就是效率低了点,不过有效
 
不要把自增字段列入就好了,在INSERT时,自增安段会自动加入数据.
 
SET IDENTITY_INSERT TableNameA ON
Insert Into TableNameA Select * From TableNameB
SET IDENTITY_INSERT TableNameA OFF
 
var
i:integer;
Lista: TStringList;//用于存储数据的字符列表
begin
Lista := TstringList.Create;
adotable1.Open;
Lista.Clear;
adotable1.GetFieldNames(lista);
i:=1;
while i<adotable1.FieldCount-1 do begin
str:=str+'['+lista.Strings+'],';
inc(i);
end;
str:=str+'['+lista.Strings+']' ;
sSql :='insert into 表名('+str+') select '+str+' from 表名'
 
完全一样的话
for i:=1 to adotable1.fieldcount-1 do begin
adotable2.fields.value:=adotable1.fields.value;
end;
 
是Access数据库的话就更简单了。
把A表的内容全部拷贝,然后在excel里面粘贴(选择性粘贴,用文本)
然后把自增加那一列,按B表的最大值+1,继续往下加(Excel的自累加拖动你应该会吧)

然后把Excel里面的数据拷贝到B里面就行了。注意一下日期形的字段。
 
同意bbsom的作法
 
后退
顶部