子查询合并表

王朝other·作者佚名  2006-11-24
宽屏版  字体: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有