这种方法适用于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