zoukankan      html  css  js  c++  java
  • ORACLE中查询第n条到第m条的数据记录的方法

    一、经过测试,下面的方法通过:

    SELECT * FROM
                 (
                     SELECT 表名.*, ROWNUM AS CON FROM 表名 WHERE ROWNUM <= M AND 其它查询条件 ORDER BY 排序条件 
                 )
    WHERE CON >=N;

    二、参考其它网上的方法

    SQL/Oracle取出第 m 条到第 n 条记录的方法

    用一句SQL取出第 m 条到第 n 条记录的方法

    用一句SQL取出第 m 条到第 n 条记录的方法

    从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)

    SELECT TOP n-m+1 *

    FROM Table

    WHERE (id NOT IN (SELECT TOP m-1 id FROM Table ))

    --从TABLE表中取出第m到n条记录 (Exists版本)

    SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists

    (Select * From (Select Top m-1 * From TABLE order by id) b Where b.id=a.id )

    Order by id

    --m为上标,n为下标,例如取出第8到12条记录,m=8,n=12,Table为表名

    Select Top n-m+1 * From Table

    Where Id>(Select Max(Id) From

    (Select Top m-1 Id From Table Order By Id Asc) Temp)

    Order By Id Asc

    #1楼 [楼主] 2007-03-02 10:38 Athrun

    直接取得数据库中的分页记录

    前提是表中必须有主键

    取得第M条记录之后的N条记录:

    SELECT TOP N *

    FROM [TABLE]

    WHERE (ID NOT IN

    (SELECT TOP M id

    FROM [TABLE]

    ORDER BY [ORDER]))

    ORDER BY [ORDER]

    Oracle中的实现,取得第M到N条记录: SELECT * FROM

    (

    SELECT * , ROWNUM AS CON FROM

    (

    SELECT * FROM [TABLE] ORDER BY [ORDER]

    )

    WHERE ROWNUM <= N

    )

    WHERE CON >= M;

    回复 引用 查看

    查询表中连续的某几条记录

    不要传任何列的条件参数,查询表中连续的某几条记录

    如:表A,id列为主键

    id name sex age

    -------------------------

    1 luoyi male 21

    2 yaya female 20

    3 lili female 22

    4 wuyong male 25

    .......................

    这个表的记录还有很多,如果我想取第二、第三条记录,不为别的,我就想要这两条,这不仅在编程中会用到,而且在一些公司面试时也有类似考题(呵呵,我没有遇到过),在oracle和mssqlserver中SQL代码分别为:

    一、Oracle

    在oracle中不能用top关键字,而用rownum,有两种方法可以实现

    1.(select * from A where rownum <= 4) minus (select * from A where rownum <= 1)

    这样就得到了二、三两条记录了。minus 关键字的意思是求两个结果集的差集,在数学中有这个概念,比如说两个集合可以合并、公有、差集.

    2. select * from (select * from A where rownum < 4) b where b.id not in(select id from A where rownum <2)  这句代码也可以实。主要运用了not in运算符

    二、ms sql server

    在server中没有minus,只能用类似于oracle的第二种方法

    select * from (select top 3 * from A) as b where b.id not in(select top 1 id from A)

    三、绘制出来的结果为:

    id name sex age

    --------------------------------

    2 yaya female 20

    3 lili female 22

    回复 引用 查看

    查询数据库中的N条记录,然后,对这N条记录排序

    看到这个主题,有些人,都会写出这个一句来,

    select top 10 * from tablename order by createtime

    这条语句的意思正好和主题相反

    正确答案1:

    select top 10 * from TableName where id in(select top 10 id from TableName order by id) order by createtime

    这条语句,就可以找出表中的前10条的记录,然后以createtime时间排序

    要求是表中需要有一个主键

    答案2

    没有主键也可以

    SELECT *

    FROM (SELECT TOP 10 *

    FROM titles) mm

    ORDER BY pubdate DESC

    回复 引用 查看

    随机取出若干条记录的SQL语句

    Sql server:

    select top 20 * from 表 order by newid()

    Access:

    SELECT top 20 * FROM 表 ORDER BY Rnd(id)

    Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成

    比如用姓名字段(UserName)

    SELECT top 20 * FROM 表 ORDER BY Rnd(len(UserName))

    MySql:

    Select * From 表 Order By rand() Limit 20

    回复 引用 查看

    作者:yanek

    email:yanek@126.com

    特点:一次查询,数据库只返回一页的数据。而不是取出所有的数据。

    说明:

    pagesize: 每页显示记录数

    cureentpage:当前页数

    select * from ( select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC

    例子说明:

    假如数据库表如下:

    user_table:

    id:主键,自增

    username:字符

    password:字符

    假设有80条记录,每页显示10条记录,id 从1到80

    现在按照id升序排列取出第三页的数据应该为:所取得记录的id 应该为 21到30。

    这时该语句应该为:

    select * from ( select TOP 10 * FROM ( SELECT TOP 30 * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC

    原理如下:

    先按照id从小到大升序取出30条记录(3*10),也就是:id 在 1-30 之间的记录 (SELECT TOP 30 * from user_table ORDER BY id ASC)

    然后按照ID降序排列这30条记录,得到记录为id 在:从30到 1

    然后在这些30条记录中取出前10条记录:取得的记录为:id 在30-21之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。

    最后在重新排序得到最终我们需要的数据。id在21-30之间
  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/lidabo/p/2854179.html
Copyright © 2011-2022 走看看