阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle结合Mybatis实现取表TOP 10

114次阅读
没有评论

共计 906 个字符,预计需要花费 3 分钟才能阅读完成。

之前一直使用 MySQL 和 informix 数据库,查表中前 10 条数据十分简单:

最原始版本:

select top * from student

当然,我们还可以写的复杂一点,比如外加一些查询条件?

比如查询前 10 条成绩大于 80 分的学生信息

添加了 where 查询条件的版本:

select top * from table where score > 80

但是!!Oracle 中没有 top 啊!!!!那么该如何实现呢?

嗯,可以用 rownum!

Oracle 中原始版本

select * from student where rownum < 10

上面这个好像也没有复杂的地方。。但是问题来了,如果我们还希望加上分数大于 80 呢?

对于我这个 oracle 初学者来说,真的是费力。在这里就直接贴出来了,希望可以让一些人少费一些力!

Oracle 添加了 where 查询条件的版本

select * from(select rownum rn,A.* from student where score > 80) 
where rn < 10

简单分析一下上面的代码。实际上是先通过内嵌的 sql 语句查询出分数大于 80 的数据,再选择内嵌 sql 查询结果中的前 10 条数据

最后附上 mybatis 代码?

<select id="selectStudent" parameterType="hashmap" resultMap="BaseResultMap">
     select *
     from (select rownum rn, A.* from student A
        where STATUS = '99'
        and score <![CDATA[>]]> #{scores,jdbcType=INTEGER}) 
     where rn <![CDATA[<=]]> #{number,jdbcType=INTEGER}
  </select>

上面的 scores 和 number 均为变量

碎碎念一般的写了这么点。希望能帮助一下遇到和我相同问题的朋友。

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-11/148240.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计906字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中