oracle-full_join-多张表横向关联,拼接多张表所需字段

我们在sql中使用最多的关联查询无非是left join.right join,union,union all。 这几种关联的区别和用法别的教程都太多了 这里不赘述. 这里讲一下full join的用法 1.需求 需要做一张统计表 要能实现多级表头 在这里插入图片描述 但是这个数据又不是一张表中存在的,分为了乔木,灌木,行道树,古树 四张表 那么为了最简单有效办法就是考虑在sql中实现了

2.实现 直接上代码,有注意的地方会在sql中标出来

select * from 					--最外层一个select,如果不需要rownum可以把*替换成你想要的字段或者使用mybatis中的resultType指定映射字段
	(select rownum rn,A.*    --这里需要 rownum 否则数据会是杂乱无章且重复的
		from (
			select catagoryA,count(catagory) amountA 
				from 表A group by catagory order by amount
		)A)B
	FULL JOIN                 --以full join 拼接
	(select rownum rn,C.* 
		from (
			select catagoryC,count(catagory) amountC 
				from 表C group by catagory order by amount
		)C)D
	ON B.rn=D.rn						--直接以rn相等就行了
	FULL JOIN
	(select rownum rn,E.* 
	from (
		select catagoryE,count(catagory) amountE
			from 表E group by catagory order by amount
	)E)F
	ON D.rn=F.rn or B.rn=F.rn   --注意 超过两张表的情况下on后面需要以(表数-2)个or拼接 
	
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

注意:如果数据和表特别多,这种拼接写法会有很明显的性能问题

上次更新: 2024-01-03, 13:22:13
最近更新
01
2023年度总结
01-03
02
MongoDB的简单的常用语法
12-11
03
cetnos7通过nfs共享磁盘文件
11-24
更多文章>