表的连接方法
时间:2011-11-19
来源:互联网
我这里有两张表: A , B
表A:只有一列a1:表B:只有一列b1
表,A,B的数据分别为:
a1: b1:
12 12
12 12
12 14
13 14
14 14
14
如何能够连接成一张表 c(c1,c2)
其中表c的c1取自a1,c2取自b1
表c的数据为:
c1 c2
12 12
12 12
12 null
13 null
14 14
14 14
null 14
( 相当于将 表a 和 表b 进行连表,相等的行连在一起,但是总行数并不增加。
例如 表a有 三个12 则和表 b连表的时候 和表b的两个12连接,第三个12就只能和null连成一行 )
表A:只有一列a1:表B:只有一列b1
表,A,B的数据分别为:
a1: b1:
12 12
12 12
12 14
13 14
14 14
14
如何能够连接成一张表 c(c1,c2)
其中表c的c1取自a1,c2取自b1
表c的数据为:
c1 c2
12 12
12 12
12 null
13 null
14 14
14 14
null 14
( 相当于将 表a 和 表b 进行连表,相等的行连在一起,但是总行数并不增加。
例如 表a有 三个12 则和表 b连表的时候 和表b的两个12连接,第三个12就只能和null连成一行 )
作者: singzero 发布时间: 2011-11-19
先内部建个分组序号字段
再外连接
select a.a1,b.b1
from
(select a1,row_number() over(partition by a1 order by 1)rn from a )a
full join (select b1,row_number() over(partition by b1 order by 1)rn from b )b
on a.a1=b.b1 and a.rn=b.rn
;
再外连接
select a.a1,b.b1
from
(select a1,row_number() over(partition by a1 order by 1)rn from a )a
full join (select b1,row_number() over(partition by b1 order by 1)rn from b )b
on a.a1=b.b1 and a.rn=b.rn
;
作者: canhui87 发布时间: 2011-11-19
SQL code
select m.a1 , n.b1 from ( select a1 , row_number() over(partiton by a1 order by a1) px from a ) m full join ( select b1 , row_number() over(partiton by b1 order by b1) px from b ) n on m.a1 = n.b1 and m.px = n.px
作者: dawugui 发布时间: 2011-11-19
写完了,发现和一楼一样,不好意思.
作者: dawugui 发布时间: 2011-11-19
乌龟跑这里来了。。。

作者: AcHerat 发布时间: 2011-11-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28