Bootstrap

oracle 查询两张表合并,oracle的多表合并查询-工作心得

刚刚开发需求写了个SQL,记个笔记,学习下关于数据库的多表合并查询的用法

select t.* from A t

UNION ALL/UNION/Intersect/MINUS

select s.* from B s;

UNION ALL

4280f14ce9c7b7ce9a165a28d51b52a7.png

使用UNION ALL,表示取A、B的合集,不过滤重复的数据行

UNION

85f6454a85331d988366b02d0b7d11a5.png

使用UNION,会将结果集A和结果集B进行UNION ALL运算,然后取两者交集的余集作为结果集

Intersect

3ce9d189f2ef57ed6ae68e7974e6548c.png

使用Intersect,会将结果集A和结果集B进行UNION ALL运算,然后两者之间的集交集作为结果集和UNION刚好相反

MINUS

9869315d52bc6610d1e507450fab67fe.png

使用MINUS,取结果集A减去结果集B留下的差集,注:如果结果集A小于等于结果集B,返回空结果集.

好啦,下面进入实战阶段,我就直接将我写的SQL贴出来吧

select a.*

from (select t.c_fund_account_name as "fundAccountNo", --基金账号

tfp.project_code as "projectCode", --项目编号

tfp.project_name as "projectName", --项目名称

tfp.project_shortname as "projectShortName", --项目简称

c.c_fund_name as "fundName", --基金产品名称

c.c_fund_code as "fundCode", --基金产品代码

nvl(thold.subsistAssetsShare, 0) as "subsisAssetsShare", --份额(家族)

to_char(thold.updateDate, 'yyyy-MM-dd') as "updateDate", --日期

nvl(c.c_current_share, 0) as "currentShare", --份额(基金网站)

to_char(c.d_date, 'y

;