sql查询指定的某行!

来源:互联网 发布:python 转str 编辑:程序博客网 时间:2024/06/10 00:43

取n到m行

1
.
selecttopm*fromtablenamewhereidnotin(selecttopn idfromtablenameorderbyidasc/*|desc*/
)
如果是采用循环,每次只取n行这一行的话,n=1,2,3……:

selecttop n*fromtablenamewhereidnotin(selecttopn idfromtablenameorderbyidasc/*|desc*/)

注意:n=1或n=0,都查不到top 1这行信息,所以要做case语句,当n=0时,只查找top 1,当n=1时,就采用上面的语句!
2
.
selecttopm*into临时表(或表变量)fromtablenameorderbycolumnname--将top m笔插入到临时表

setrowcountn  --只取n条结果
select*from表变量orderbycolumnnamedesc

3.
selecttopn*  from
 
(selecttopm*  fromtablenameorderbycolumnname) aorderbycolumnnamedesc



4.如果tablename里没有其他identity列,那么:
先生成一个序列,存储在一临时表中.
selectidentity(int) id0,*into#tempfrom
tablename

取n到m条的语句为:
select*from#tempwhereid0>=nandid0 <=
m

如果你在执行selectidentity(int) id0,*into#tempfromtablename这条语句的时候报错,那是因为你的DB中间的selectinto/
bulkcopy属性没有打开要先执行:
execsp_dboption 你的DB名字,'select into/bulkcopy'
,true


5
.如果表里有identity属性,那么简单:
select*fromtablenamewhereidentity_colbetweennand


6.SQL2005开始.可以使用row_number()over
()生成行号
;withcteas

(
selectid0=row_number()over(orderbyid),*fromtablename
)
select*fromctewhereid0betweennto
m
来自于:
http://topic.csdn.net/u/20090401/18/24a3365d-6221-4f49-abce-35a103ef4626.html

下面放个小例子:【是关于rownum 的例子】sql2000中无法运用,sql2005有row_number()

在Oracle8i,如何用SQL语句实现:查询某字段的下一行记录值减上一行记录值的差?
如有表如下:
      单位编号                 收入
````````````````````````````````
      001                           5000
      002                           6000
      003                           5600
      ...

想得到如下:
    单位编号                   差                  
````````````````````````````````
      001                           5000         //头行记录为原值
      002                           1000         //6000-5000=1000
      003                           -400         //5600-6000=-400
      ...

--try;

select   a.单位编号,a.收入-b.收入   差   from  
(
    select   rownum   no,单位编号,收入   from   tb
)   a,
(
    select   rownum   no,单位编号,收入   from   (select   '000 '   单位编号,0   收入   from   dual   union   all  
                                                      select   单位编号,收入   from   tb)
)   b
where   a.no=b.no;