sql查询指定的某行!

    技术2022-05-20  66

    取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表变量orderbycolumnnamedesc3.selecttopn*  from (selecttopm*  fromtablenameorderbycolumnname) aorderbycolumnnamedesc4.如果tablename里没有其他identity列,那么:先生成一个序列,存储在一临时表中.selectidentity(int) id0,*into#tempfromtablename取n到m条的语句为:select*from#tempwhereid0>=nandid0 <=m如果你在执行selectidentity(int) id0,*into#tempfromtablename这条语句的时候报错,那是因为你的DB中间的selectinto/bulkcopy属性没有打开要先执行:execsp_dboption 你的DB名字,'select into/bulkcopy',true5.如果表里有identity属性,那么简单:select*fromtablenamewhereidentity_colbetweennand6.SQL2005开始.可以使用row_number()over()生成行号;withcteas(selectid0=row_number()over(orderbyid),*fromtablename)select*fromctewhereid0betweenntom来自于: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))   bwhere   a.no=b.no;

     


    最新回复(0)