在大型的系统开发中,设计的表比较多,有时候会用一个条件实现多表联查,这时候用union all会方便很多:
<!-- 获取撤单列表 -->
<select id="queryList" parameterType="recallDealBean" resultType="hashmap">
select
fs.APP_SNO_ as "oappSno",
(select SHORT_NAME_ from CMN_FUND where FUND_CODE_ = fs.FUND_CODE_)||'('||fs.FUND_CODE_||')' as "shortName",
fs.BIZ_FLAG_ as "bizFlag",
fs.APP_AMT_ as "appAmt",
fs.BRANCH_CODE_ as "branchCode",
fs.MODIFY_USER_ as "modifyUser",
fs.CHECK_USER_ as "checkUser"
from
FND_SUBSCRIBE fs
where
fs.FINANCE_ACC_ = #{financeAcc}
<![CDATA[ and fs.TRADE_DATE_ >= to_char(sysDate,'YYYYMMDD') ]]>
UNION ALL
select
fp.APP_SNO_ as "oappSno",
(select SHORT_NAME_ from CMN_FUND where FUND_CODE_ = fp.FUND_CODE_)||'('||fp.FUND_CODE_||')' as "shortName",
fp.BIZ_FLAG_ as "bizFlag",
fp.APP_AMT_ as "appAmt",
fp.BRANCH_CODE_ as "branchCode",
fp.MODIFY_USER_ as "modifyUser",
fp.CHECK_USER_ as "checkUser"
from
FND_PURCHASE fp
where
fp.FINANCE_ACC_ = #{financeAcc}
<![CDATA[ and fp.TRADE_DATE_ >= to_char(sysDate,'YYYYMMDD') ]]>
UNION ALL
select
fr.APP_SNO_ as "oappSno",
(select SHORT_NAME_ from CMN_FUND where FUND_CODE_ = fr.FUND_CODE_)||'('||fr.FUND_CODE_||')' as "shortName",
fr.BIZ_FLAG_ as "bizFlag",
fr.APP_VOL_ as "appVol",
fr.BRANCH_CODE_ as "branchCode",
fr.MODIFY_USER_ as "modifyUser",
fr.CHECK_USER_ as "checkUser"
from
FND_REDEEM fr
where
fr.FINANCE_ACC_ = #{financeAcc}
<![CDATA[ and fr.TRADE_DATE_ >= to_char(sysDate,'YYYYMMDD') ]]>
UNION ALL
select
fc.APP_SNO_ as "oappSno",
(select SHORT_NAME_ from CMN_FUND where FUND_CODE_ = fc.FUND_CODE_)||'('||fc.FUND_CODE_||')' as "shortName",
fc.BIZ_FLAG_ as "bizFlag",
fc.APP_VOL_ as "appVol",
fc.BRANCH_CODE_ as "branchCode",
fc.MODIFY_USER_ as "modifyUser",
fc.CHECK_USER_ as "checkUser"
from
FND_CONVERT fc
where
fc.FINANCE_ACC_ = #{financeAcc}
<![CDATA[ and fc.TRADE_DATE_ >= to_char(sysDate,'YYYYMMDD') ]]>
</select>
这样就查出来了我们想要的列表。