union的用法,记录工作中的sql

查询语句与count语句
博客提及了查询语句和count语句,二者在信息技术领域的数据库操作中较为常见,查询语句用于获取数据,count语句可统计数据数量。

查询语句

<select id="findAll" resultMap="BaseResultMap">
		select * from (select rownum rownum_rn, a.* from(SELECT * from (
		
		select 
				d.ID , d.C_DISTRICTBCDID , d.C_ADDRESSID , d.C_CHANNELNUM , d.C_HARDWAREVER , d.C_SOFTWAREVER , d.C_FIXIP , d.C_LASTCOMTIME , d.C_SOFTUPDATEDATE , d.C_INSTALLDATE , d.C_DESP , d.C_DEVTYPE , d.NBDEVICEID , d.NBDEVICENAME , mt.EPU_LOCAL, mt.EPU_PROVINCE,mt.EPU_CITY,mt.EPU_DISTRICT,mt.EPU_COURT 
			FROM T_DEVICEINFO d 
			LEFT JOIN T_METERBOX mt on d.C_DistrictBCDId = mt.C_DistrictBCDId and d.C_AddressId = mt.C_AddressId and d.C_ChannelNum = mt.C_CHANNELNUM 
			WHERE d.C_DEVTYPE = 0
			
			UNION
			
			select 
				d.ID , d.C_DISTRICTBCDID , d.C_ADDRESSID , d.C_CHANNELNUM , d.C_HARDWAREVER , d.C_SOFTWAREVER , d.C_FIXIP , d.C_LASTCOMTIME , d.C_SOFTUPDATEDATE , d.C_INSTALLDATE , d.C_DESP , d.C_DEVTYPE , d.NBDEVICEID , d.NBDEVICENAME , oc.EPU_LOCAL, oc.EPU_PROVINCE,oc.EPU_CITY,oc.EPU_DISTRICT,oc.EPU_COURT 
			FROM T_DEVICEINFO d 
			LEFT JOIN T_OUTGOINGCABINET oc ON d.C_DistrictBCDId = oc.C_DistrictBCDId AND d.C_AddressId = oc.C_AddressId AND d.C_ChannelNum = oc.C_CHANNELNUM 
			WHERE d.C_DEVTYPE = 1
			
			UNION
			
			select 
				d.ID , d.C_DISTRICTBCDID , d.C_ADDRESSID , d.C_CHANNELNUM , d.C_HARDWAREVER , d.C_SOFTWAREVER , d.C_FIXIP , d.C_LASTCOMTIME , d.C_SOFTUPDATEDATE , d.C_INSTALLDATE , d.C_DESP , d.C_DEVTYPE , d.NBDEVICEID , d.NBDEVICENAME , ts.EPU_LOCAL, ts.EPU_PROVINCE,ts.EPU_CITY,ts.EPU_DISTRICT,ts.EPU_COURT 
			FROM T_DEVICEINFO d 
			LEFT JOIN T_SUBSTAIN ts ON d.C_DistrictBCDId = ts.C_DistrictBCDId AND d.C_AddressId = ts.C_AddressId 
			WHERE d.C_DEVTYPE = 2
		
		) res where 1=1
		<if test="cDistrictbcdid != '' and cDistrictbcdid != null">
			<![CDATA[ and C_DistrictBCDId LIKE concat(concat('%',#{cDistrictbcdid,jdbcType=VARCHAR}),'%')]]>
		</if>
		<if test="cAddressid != '' and cAddressid != null">
			<![CDATA[ and C_AddressId LIKE concat(concat('%',#{cAddressid,jdbcType=VARCHAR}),'%')]]>
		</if>
		<if test="cInstalldateBegin != '' and cInstalldateBegin != null">
			and C_InstallDate &gt;=#{cInstalldateBegin,jdbcType=VARCHAR}
		</if>
		<if test="cInstalldateEnd != '' and cInstalldateEnd != null">
			and C_InstallDate &lt;=#{cInstalldateEnd,jdbcType=VARCHAR}
		</if>
		<if test="epuProvince != '' and epuProvince != null">
			and EPU_PROVINCE =#{epuProvince,jdbcType=VARCHAR}
		</if>
		<if test="epuCity != '' and epuCity != null">
			and EPU_CITY =#{epuCity,jdbcType=VARCHAR}
		</if>
		<if test="epuDistrict != '' and epuDistrict != null">
			and EPU_DISTRICT =#{epuDistrict,jdbcType=VARCHAR}
		</if>
		<if test="epuCourt != '' and epuCourt != null">
			and EPU_COURT =#{epuCourt,jdbcType=VARCHAR}
		</if>
		<if test="devType != null">
			and C_DEVTYPE =#{devType,jdbcType=INTEGER}
		</if>
		order by C_InstallDate DESC
<!-- 		order by  EPU_PROVINCE,EPU_CITY,EPU_DISTRICT,EPU_COURT asc -->
		) a)
		<include refid="limit_sql" />
	</select>

count语句

<select id="findCount" resultMap="BaseResultMap">
	
	select count(*) 
		FROM
		
		(
		select 
				d.ID , d.C_DISTRICTBCDID , d.C_ADDRESSID , d.C_CHANNELNUM , d.C_HARDWAREVER , d.C_SOFTWAREVER , d.C_FIXIP , d.C_LASTCOMTIME , d.C_SOFTUPDATEDATE , d.C_INSTALLDATE , d.C_DESP , d.C_DEVTYPE , d.NBDEVICEID , d.NBDEVICENAME , mt.EPU_LOCAL, mt.EPU_PROVINCE,mt.EPU_CITY,mt.EPU_DISTRICT,mt.EPU_COURT 
			FROM T_DEVICEINFO d 
			LEFT JOIN T_METERBOX mt on d.C_DistrictBCDId = mt.C_DistrictBCDId and d.C_AddressId = mt.C_AddressId and d.C_ChannelNum = mt.C_CHANNELNUM 
			WHERE d.C_DEVTYPE = 0
			
			UNION
			
			select 
				d.ID , d.C_DISTRICTBCDID , d.C_ADDRESSID , d.C_CHANNELNUM , d.C_HARDWAREVER , d.C_SOFTWAREVER , d.C_FIXIP , d.C_LASTCOMTIME , d.C_SOFTUPDATEDATE , d.C_INSTALLDATE , d.C_DESP , d.C_DEVTYPE , d.NBDEVICEID , d.NBDEVICENAME , oc.EPU_LOCAL, oc.EPU_PROVINCE,oc.EPU_CITY,oc.EPU_DISTRICT,oc.EPU_COURT 
			FROM T_DEVICEINFO d 
			LEFT JOIN T_OUTGOINGCABINET oc ON d.C_DistrictBCDId = oc.C_DistrictBCDId AND d.C_AddressId = oc.C_AddressId AND d.C_ChannelNum = oc.C_CHANNELNUM 
			WHERE d.C_DEVTYPE = 1
			
			UNION
			
			select 
				d.ID , d.C_DISTRICTBCDID , d.C_ADDRESSID , d.C_CHANNELNUM , d.C_HARDWAREVER , d.C_SOFTWAREVER , d.C_FIXIP , d.C_LASTCOMTIME , d.C_SOFTUPDATEDATE , d.C_INSTALLDATE , d.C_DESP , d.C_DEVTYPE , d.NBDEVICEID , d.NBDEVICENAME , ts.EPU_LOCAL, ts.EPU_PROVINCE,ts.EPU_CITY,ts.EPU_DISTRICT,ts.EPU_COURT 
			FROM T_DEVICEINFO d 
			LEFT JOIN T_SUBSTAIN ts ON d.C_DistrictBCDId = ts.C_DistrictBCDId AND d.C_AddressId = ts.C_AddressId 
			WHERE d.C_DEVTYPE = 2
		) a
		
		where 1=1
		
		<if test="cDistrictbcdid != '' and cDistrictbcdid != null">
			<![CDATA[ and a.C_DistrictBCDId LIKE concat(concat('%',#{cDistrictbcdid,jdbcType=VARCHAR}),'%')]]>
		</if>
		
		<if test="cAddressid != '' and cAddressid != null">
			<![CDATA[ and a.C_AddressId LIKE concat(concat('%',#{cAddressid,jdbcType=VARCHAR}),'%')]]>
		</if>
		<if test="cInstalldateBegin != '' and cInstalldateBegin != null">
			<![CDATA[ and a.C_InstallDate >= #{cInstalldateBegin,jdbcType=VARCHAR}]]>
		</if>
		<if test="cInstalldateEnd != '' and cInstalldateEnd != null">
			<![CDATA[ and da.C_InstallDate <= #{cInstalldateEnd,jdbcType=VARCHAR}]]>
		</if>
		<if test="epuProvince != '' and epuProvince != null">
			<![CDATA[ and a.EPU_PROVINCE =#{epuProvince,jdbcType=VARCHAR}]]>
		</if>
		<if test="epuCity != '' and epuCity != null">
			<![CDATA[and a.EPU_CITY =#{epuCity,jdbcType=VARCHAR}]]>
		</if>
		<if test="epuDistrict != '' and epuDistrict != null">
			<![CDATA[and a.EPU_DISTRICT =#{epuDistrict,jdbcType=VARCHAR}]]>
		</if>
		<if test="epuCourt != '' and epuCourt != null">
			<![CDATA[and a.EPU_COURT =#{epuCourt,jdbcType=VARCHAR}]]>
		</if>
		<if test="devType != null">
			and a.C_DEVTYPE =#{devType,jdbcType=INTEGER}
		</if>
	</select>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁漂打工仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值