mybatis多条件查询满足要求的最多N条最新数据
2017-01-25 14:20
597 查看
先给出数据库表TBL_STU:
问题描述:
从表TBL_STU中选择stu_num为特定值且stu_type为特定取值集合(以数组表示stu_type取值集合)且针对每个stu_type取值选取按时间排序最新的最多maxSize条记录。
问题描述举例:
例如上表中选择stu_num=“100”且stu_type=["1","2","3"]且针对stu_type分别取值为“1”“2”“3”时选取按时间排序最新的3条记录。最终选择出来的结果如上图打上红色对勾的八条记录。
问题解决:(结合项目情况给出mybatis中.xml文件内的语句)
<select id="queryWithLimit" resultMap="BaseResultMap" parameterType="java.util.Map">
select
<include refid="Base_Column_List" />
from (
select <include refid="Base_Column_List" />, ROW_NUMBER() OVER(partition by stu_type
order by stu_time desc ) AS row from TBL_STU
where stu_num = #{stuNum}
<if test="stuTypes != null">
AND stu_type in
<foreach collection="stuTypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
) as temp where <![CDATA[temp.row <= #{maxSize}]]>
</select>
注:parameterType为传入参数,为stuNum = “100” | stuTypes = [“1”,“2”,“3”] | maxSize = 3
BaseResultMap为返回类型
其中Base_Column_List 为:
<sql id="Base_Column_List">
stu_num , stu_type, stu_name , stu_score , stu_time
</sql>
问题描述:
从表TBL_STU中选择stu_num为特定值且stu_type为特定取值集合(以数组表示stu_type取值集合)且针对每个stu_type取值选取按时间排序最新的最多maxSize条记录。
问题描述举例:
例如上表中选择stu_num=“100”且stu_type=["1","2","3"]且针对stu_type分别取值为“1”“2”“3”时选取按时间排序最新的3条记录。最终选择出来的结果如上图打上红色对勾的八条记录。
问题解决:(结合项目情况给出mybatis中.xml文件内的语句)
<select id="queryWithLimit" resultMap="BaseResultMap" parameterType="java.util.Map">
select
<include refid="Base_Column_List" />
from (
select <include refid="Base_Column_List" />, ROW_NUMBER() OVER(partition by stu_type
order by stu_time desc ) AS row from TBL_STU
where stu_num = #{stuNum}
<if test="stuTypes != null">
AND stu_type in
<foreach collection="stuTypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
) as temp where <![CDATA[temp.row <= #{maxSize}]]>
</select>
注:parameterType为传入参数,为stuNum = “100” | stuTypes = [“1”,“2”,“3”] | maxSize = 3
BaseResultMap为返回类型
其中Base_Column_List 为:
<sql id="Base_Column_List">
stu_num , stu_type, stu_name , stu_score , stu_time
</sql>
相关文章推荐
- Mybatis中查询的参数为Map条件中是in 数据组参数
- 查询数据库中满足条件的特定行数据
- Mybatis中查询的参数为Map条件中是in 数据组参数
- 查询分组数据指行条件满足的行的上一条记录的技巧
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- 查询数据库中满足条件的特定行数据
- CMD 插入数据,MyBatis测试程序中查询不到最新的数据问题
- Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
- MYBATIS 根据IN条件查询时,数据只查第一个的问题(字符串被截断......)
- mybatis分页多条件查询指定时间段数据的sql语句
- sql 一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录。
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- MyBatis映射文件(集合数据的添加与获取,条件查询,模糊查询)
- 设计一个DNS的Cache结构,要求能够满足每秒5000以上的查询,满足IP数据的快速插入,查询的速度要快
- Silverlight 3 关于数据添加,删除,修改,条件查询的一点代码
- 空间数据查询——根据属性条件查询对象
- 最新最牛!功能最多的四角号码在线查询
- PB数据窗口datawindow的查询条件设置和执行
- 空间数据查询——根据几何条件查询对象
- SQL SERVER 动态SQL实现 多条件查询数据