Delphi SQL 批量插入,该如何解决
Delphi SQL 批量插入
有三个表:
a(ID1,Name1);
b(ID2,Name2);
c(ID1,ID2);
a中ID1对应的数据有:
a1,a2,...,am
b中ID2对应的数据有:
b1,b2,...bn
在Delphi中如何写高效点的语句,使得能够将下面的数据插入到c表中:
a1,b1
a1,b2
...
a1,bn
...
a2,b1
a2,b2
...
a2,bn
...
...
am,b1
am,b2
...
am,bn
我用的是ADOQuery连接数据库的。
------解决方案--------------------
先用查询生成a、b关联的表(符合你格式要求的),然后用插入语句,将查询结果插入到c表中。
------解决方案--------------------
create table #a (id1 char(10), name1 char(10))
create table #b (id2 char(10), name2 char(10))
create table #c (id1 char(10), id2 char(10))
insert into #a values('a1', 'a1')
insert into #a values('a2', 'a2')
insert into #a values('a3', 'a3')
insert into #b values('b1', 'b1')
insert into #b values('b2', 'b2')
insert into #b values('b3', 'b3')
insert into #c
select #a.id1, #b.id2
from #a CROSS JOIN #b
select * from #C
order by id1, id2
有三个表:
a(ID1,Name1);
b(ID2,Name2);
c(ID1,ID2);
a中ID1对应的数据有:
a1,a2,...,am
b中ID2对应的数据有:
b1,b2,...bn
在Delphi中如何写高效点的语句,使得能够将下面的数据插入到c表中:
a1,b1
a1,b2
...
a1,bn
...
a2,b1
a2,b2
...
a2,bn
...
...
am,b1
am,b2
...
am,bn
我用的是ADOQuery连接数据库的。
------解决方案--------------------
先用查询生成a、b关联的表(符合你格式要求的),然后用插入语句,将查询结果插入到c表中。
------解决方案--------------------
create table #a (id1 char(10), name1 char(10))
create table #b (id2 char(10), name2 char(10))
create table #c (id1 char(10), id2 char(10))
insert into #a values('a1', 'a1')
insert into #a values('a2', 'a2')
insert into #a values('a3', 'a3')
insert into #b values('b1', 'b1')
insert into #b values('b2', 'b2')
insert into #b values('b3', 'b3')
insert into #c
select #a.id1, #b.id2
from #a CROSS JOIN #b
select * from #C
order by id1, id2