zoukankan      html  css  js  c++  java
  • Oracle结合Mybatis实现取表TOP 10

    之前一直使用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均为变量

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

  • 相关阅读:
    《秋日》 -- 程颢
    《安乐吟》 -- 邵雍
    《大学》笔记
    《跨越鸿沟》笔记
    庄子《齐物论》—— 方生方死、因是因非是对立统一规律的起源
    《饮酒(其五)》陶渊明
    《亲密关系》笔记
    《人生的智慧》笔记
    《历史的教训》笔记
    《格鲁夫给经理人的第一课》笔记
  • 原文地址:https://www.cnblogs.com/cfyrwang/p/7775142.html
Copyright © 2011-2022 走看看