在线咨询
QQ咨询
服务热线
服务热线:13125520620
TOP

子查询合并表-数据库

发布时间:2011-11-12 浏览:4589

这种方法适用于2个表之间没有字段有联系,只是按已排列的顺序合在一起,下面的方法是不用临时表用子查询实现的方法,该方法不适用于处理大量行。它适用于处理几百行。对于大型表,一定要使用索引以避免进行大范围的搜索。

create  table tb1
(id int identity(1,1) primary key clustered, 
l_name varchar(10))
go
create  table tb2
(l_id char(3) primary key clustered, 
f_name varchar(10))

--tb1中的数据
id          l_name    
----------- ----------
1           aaa
2           bbb
3           ccc
4           ddd
5           eee
6           fff
7           ggg
8           hhh
9           kkk

--tb2中的数据
l_id f_name    
---- ----------
afd  dfsg1
cbn  gsdg2
cgb  kddf3
dlk  fgjn4
ery  bfhfhx5
fdh  dsdfas6
gjf  dfh7
lft  cfghsh8
snf  dgjhdg9

--合并程序
select id,l_name,l_id,f_name
from (select rank=count(*),a.id,a.l_name from tb1 a join tb1 b on a.id>=b.id group by a.id,a.l_name  ) a1
 join (select rank=count(*),a.l_id,a.f_name from tb2 a join tb2 b on a.l_id>=b.l_id group by a.l_id,a.f_name ) a2
 on a1.rank=a2.rank

--结果
id          l_name     l_id f_name    
----------- ---------- ---- ----------
1           aaa        afd  dfsg1
2           bbb        cbn  gsdg2
3           ccc        cgb  kddf3
4           ddd        dlk  fgjn4
5           eee        ery  bfhfhx5
6           fff        fdh  dsdfas6
7           ggg        gjf  dfh7
8           hhh        lft  cfghsh8
9           kkk        snf  dgjhdg9

TAG
软件定制,软件开发,瀚森HANSEN
0
该内容对我有帮助