posts - 36,  comments - 12,  views - 10万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

  啥也不说了,直接上这个我迄今为止写过的最复杂的sql吧:

复制代码
<sqlMap namespace="tt">

<sql id="ips_subcount_st">
(select count(*) from
<iterate property="tableName" conjunction="union" open="(" close=")" >
select * from $tableName[]$
</iterate> t11
where
t11.$groupBy$=t1.$groupBy$ and
serverity
<![CDATA[ > ]]>${serverity_high})
as highServeCount ,

(select count(*) from
<iterate property="tableName" conjunction="union" open="(" close=")" >
select * from $tableName[]$
</iterate> t11
where
t11.$groupBy$=t1.$groupBy$ and
serverity
<![CDATA[ > ]]>${serverity_low} and
serverity
<![CDATA[ <= ]]>${serverity_high})
as midServeCount ,

(select count(*) from
<iterate property="tableName" conjunction="union" open="(" close=")" >
select * from $tableName[]$
</iterate> t11
where
t11.$groupBy$=t1.$groupBy$ and
serverity
<![CDATA[ <= ]]>${serverity_low})
as lowServeCount ,
</sql>


<select id="t_Ips" parameterClass="java.util.HashMap"
resultClass
="com.***.Ips">
select
t1.neId as neId,
t2.neName as neName,
t2.sn as sn,
t3.name as ifName,
t1.srcIp as srcIp,
t1.dstIp as dstIp,
t1.sigName as sigName,
t1.serverity as serverity,
<isEqual property="groupBy" compareValue="ifName">
(select count(*) from
<iterate property="tableName" conjunction="union" open="(" close=")" >
select * from $tableName[]$
</iterate> t11
where
t11.ifId=t1.ifId and
serverity
<![CDATA[ > ]]>${serverity_high})
as highServeCount ,

(select count(*) from
<iterate property="tableName" conjunction="union" open="(" close=")" >
select * from $tableName[]$
</iterate> t11
where
t11.ifId=t1.ifId and
serverity
<![CDATA[ > ]]>${serverity_low} and
serverity
<![CDATA[ <= ]]>${serverity_high})
as midServeCount ,

(select count(*) from
<iterate property="tableName" conjunction="union" open="(" close=")" >
select * from $tableName[]$
</iterate> t11
where
t11.ifId=t1.ifId and
serverity
<![CDATA[ <= ]]>${serverity_low})
as lowServeCount ,
</isEqual>
<isEqual property="groupBy" compareValue="neId">
<include refid="ips_subcount_st" />
</isEqual>
<isEqual property="groupBy" compareValue="srcIp">
<include refid="ips_subcount_st" />
</isEqual>
<isEqual property="groupBy" compareValue="dstIp">
<include refid="ips_subcount_st" />
</isEqual>

<isNotEqual property="groupBy" compareValue="ifName">
<isNotEqual property="groupBy" compareValue="neId">
<isNotEqual property="groupBy" compareValue="srcIp">
<isNotEqual property="groupBy" compareValue="dstIp">
<!-- 这个地方不这样搞一下的话,会导致resultClass中的三个属性没有值,会出错。 -->
0 as highServeCount,
0 as midServeCount,
0 as lowServeCount,
</isNotEqual>
</isNotEqual>
</isNotEqual>
</isNotEqual>

sum(t1.sponsorNum) as sponsorNum ,
sum(t1.victimNum) as victimNum,
t2.domainId as groupId,
t6.domainName as groupName,
t1.insertTstamp as timestamp
from
<iterate property="tableName" conjunction="union" open="(" close=")" >
select * from $tableName[]$
</iterate> t1
left join ( select neId,neName,sn,domainId from h_db.t_NeInfo) t2 on (t1.neId=t2.neId )
left join (select neId,ifId,name from h_db.t_IfInfo) t3 on (t1.neId=t3.neid and t1.ifId=t3.ifId)
left join (select domainId,domainName from h_db.t_Domain) t6 on t2.domainId=t6.domainId
<dynamic prepend="WHERE">
<isGreaterThan prepend="AND" property="neId" compareValue="0">
t1.neId=#neId:INTEGER#
</isGreaterThan>
<isGreaterThan prepend="AND" property="groupId" compareValue="0">
t2.domainId=#groupId:INTEGER#
</isGreaterThan>
<isNotEmpty prepend="AND" property="ifName">
t3.name=#ifName#
</isNotEmpty>
<isNotEmpty prepend="AND" property="neList">
t1.neId in
<iterate property="neList" conjunction="," open="(" close=")" >
#neList[]#
</iterate>
</isNotEmpty>
<isNotEmpty prepend="AND" property="groupList">
t2.domainId in
<iterate property="groupList" conjunction="," open="(" close=")" >
#groupList[]#
</iterate>
</isNotEmpty>
<isNotEmpty prepend="AND" property="beginTime">
t1.insertTstamp
<![CDATA[ >= ]]>#beginTime:TIMESTAMP#
</isNotEmpty>
<isNotEmpty prepend="AND" property="endTime">
t1.insertTstamp
<![CDATA[ <= ]]>#endTime:TIMESTAMP#
</isNotEmpty>
</dynamic>
<isNotEmpty property="groupBy">
group by $groupBy$
</isNotEmpty>
<isNotEmpty property="orderBy">
order by $orderBy$
</isNotEmpty>
<isGreaterThan property="topN" compareValue="0">
limit #topN:INTEGER#
</isGreaterThan>
</select>
</sqlMap>
复制代码
posted on   桃源月色  阅读(11334)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示