zoukankan      html  css  js  c++  java
  • 【KMS】Oracle中rownum的使用

    目的:A表数据按时间排序后,根据需要查出第1~5条,或者第5~10条数据

    SQL1:select order from A where rownum<6 order by dt desc;
    结果:查出的结果并不是按照时间倒序排列后的前5条。

    SQL2:select order from (select order from A order by dt desc) where rownum < 6;
    SQL3:select order from (select order from A order by dt desc) where rownum < 6 and rownum > 0;
    结果:SQL2 可以实现,但是SQL3查不出任何内容

    SQL4:select t.trackno, t.order from (select rownum trackno, order from (select order from A order by dt desc ) ) t where t.trackno>5 and t.trackno<10;
    结果:可以实现。

    总结:

    rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。

    SQL1,2,3 中,Oracle首先分配rownum,之后才order by dt desc, 因此,根据rownum<6 查出的结果并不能按照时间排序。SQL4,子查询中先将表按照时间排序,然后再分配rownum,这时再增加条件rownum<6,就能够满足要求 了。

  • 相关阅读:
    optparse--强大的命令行参数处理包
    B/S和C/S架构的区别
    Document
    Document
    Document
    Document
    Document
    Document
    Document
    Document
  • 原文地址:https://www.cnblogs.com/orientsun/p/2610438.html
Copyright © 2011-2022 走看看