一个数据库插入的技巧(50分)

  • 主题发起人 主题发起人 蜉蝣小生
  • 开始时间 开始时间

蜉蝣小生

Unregistered / Unconfirmed
GUEST, unregistred user!
主从表结构,通过程序向从表里面插入数据,
sql.add(insert into a_fapiaomingxi(fapiaohao,pinmingdaima,shunxuhao) select '''+dbgrideh1.text+''',pingmingdaima,???????? from a_xingshifapiao where...... )
从a_xingshifapiao里面读出来再向a_fapiaomingxi里面插入的时候想按顺序给每条记录一个shunxuhao,1,2,3....(类似与流水号),如果用下面的方法
select '''+dbgrideh1.text+''',pingmingdaima,???????? from a_xingshifapiao
i:=1
while not eof do
begin
insert into a_fapiaomingxi(fapiaohao,pinmingdaima,''i'') ;
i:=i+1;
next;
end;
很好实现,可是用前面一个方法怎么实现呢,简单的写了写,不知道我讲明白了没有
 
sql.add('select '''+dbgrideh1.text+''',pingmingdaima,IDENTITY(int, 1,1) as ID into #T from a_xingshifapiao where.....');
sql.add('insert into a_fapiaomingxi(fapiaohao,pinmingdaima,shunxuhao) select * from #T');
 
有没有不用临时表,就按照sql.add(insert into a_fapiaomingxi(fapiaohao,pinmingdaima,shunxuhao) select '''+dbgrideh1.text+''',pingmingdaima,???????? from a_xingshifapiao where...... )的结构的方法呢?
 
还有一个办法可以不用临时表,如果你的数据记录100条左右,可以试试,超过1000条会O化的很厉害:
insert into a_fapiaomingxi(fapiaohao,pinmingdaima,shunxuhao) select '''+dbgrideh1.text+''',pingmingdaima,
(select count(*) from a_xingshifapiao t1 where...and t1.pingmingdaima<=t2.pingmingdaima) as Id
from a_xingshifapiao t2 where...
 
后退
顶部