zoukankan      html  css  js  c++  java
  • 对查询数据库中第M到N条记录的思考2

    在<<对查询数据库中第M到N条记录的思考1 >>中我们讨论了如果要查询一张表中第M到第N条记录,条件是那张表中已经存在一个递增连续的字段.但是,很多情况下我们要查询的表中没有这个字段又怎么办呢?
          呵呵,那天晚上找学长商量了一下,还是得到了满意的答案.现在我就与大家一起来讨论一下:
         
          首先我们从最基础的入手:

     use wtqtest
          
    go


          
    create table ct(
            ss 
    varchar(20)
          )
          
    go
          
          
    --我想这两句我就不用解释了吧!就是建立一张没有自动增长字段的表
          
          
    --接下来我们插入20条记录
          
          
    insert into ct values('1asdf')
          
    insert into ct values('2asdf')
          
    insert into ct values('3asdf')
          
    insert into ct values('4asdf')
          
    insert into ct values('5asdf')
          
    insert into ct values('6asdf')
          
    insert into ct values('7asdf')
          
    insert into ct values('8asdf')
          
    insert into ct values('9asdf')
          
    insert into ct values('10asdf')
          
    insert into ct values('11asdf')
          
    insert into ct values('12asdf')
          
    insert into ct values('13asdf')
          
    insert into ct values('14asdf')
          
    insert into ct values('15asdf')
          
    insert into ct values('16asdf')
          
    insert into ct values('17asdf')
          
    insert into ct values('18asdf')
          
    insert into ct values('19asdf')
          
    insert into ct values('20asdf')
          
         
    --接下来进入关键步骤,使用临时变量表
         declare @t table --在内存中建立一个临时变量表,运行结束后自动释放
          (  
            p 
    int identity(1,1),
            s 
    varchar(20)  --一定要与ct表的那个 [ss] 字段数据类型一致
          )
          
          
    --向变量表中放入内容
          insert into @t select * from ct --将ct 表中的内容查询到@t表中
          --下面是做个测试查询,应该有内容才对,但你可以看看你的数据库中并没有这张表
          select * from @t  
          
          
          
    --现在就可以在@t表中查询第M到第N条记录了(这个是向表中查询第12条第15条记录)
          select * from
          (
           
    select top 4 * from 
            (
    select top 15 * from @t order by p ) t
            
    order by p desc 
          )   t 
    order by p
          
    -- 如果是向表中查询第M到第N条记录,则15那个位置代表:N,而4那个位置代表:N-M+1;
          -- 查询出来的结果最终包含第M条记录,也包含第N条记录

          
          
          呵呵,这节就说这么多了,,相信大家也应该知道怎么做了!!!
         

  • 相关阅读:
    [单选题]请求文件“time.inc”,当发生错误时就终止脚本,正确的方式是:
    [单选题]条件语句的时候不应该使用哪一种控制结构
    [高德地图]学习笔记--基本结构
    nodejs实战:小爬虫
    linux实用命令(2016/11/8-永远)
    自适应响应式布局-实现原理
    解决npm安装慢的方法
    git进阶(分支与标签管理)
    git进阶(远程仓库github)
    git入门命令(只涉及本地仓库管理)
  • 原文地址:https://www.cnblogs.com/wantingqiang/p/1301045.html
Copyright © 2011-2022 走看看