子查询合并表

博客介绍了一种适用于两个无字段联系的表按已排列顺序合并的方法,通过子查询实现,不用临时表,但不适用于大量行,处理几百行较合适。还给出了创建表、插入数据、合并程序及合并结果的SQL代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值