SQL 在查询结果中选取某一条数据 怎么实现

代码:
select * from steriworkrecord
where starttime between '2013-11-1' and '2013-12-31'
比如我现在要着结果里面第2条到第10条的数据 要怎么写

-- 用的啥数据库也不写清楚。。。


-- MS sql server2005以上,ORACLE

select * from (
                select row_number() over (  order by starttime asc) as rownum,* from steriworkrecord                        where starttime  between '2013-11-1' and '2013-12-31'
               )  a
where rownum between 2 and 10

-- 【注意( order by starttime asc)是你排序的方式asc升序,desc降序】

========================================================

-- ORACLE还可以

select * from (
                select rownum as n,* from steriworkrecord  
                where starttime  between '2013-11-1' and '2013-12-31'
                )  a
where a.n between 2 and 10

==========================================================

-- MYSQL,postgreSQL似乎只能标量子查询

SELECT *FROM (
            SELECT a.*,(
                    SELECT count(*)  FROM steriworkrecordb    WHERE b.ID<= a.ID) AS n 
                    from steriworkrecorda
              ) ts
where ts.n between 2 and 10


-- 【注意b.ID<= a.ID  其中ID换成你的主键名称】

-- 代码都忙你实际测试了ok


追问

用的SQL2005 能解释下你发的第一个 代码的意思吗

追答

最外面括号中利用row_number() over查询序号并将列命名为rownum,再加上*,这样就组成了一个带有rownum序号字段的新的数据表(和你之前的一样只是前面多了个rownum),然后将这个新表命名为a表,在a表中条件是查询序号2~10,这样就得到了你的结果。

简单说,加上rownum为序号的查询返回一个新的带有序号的新表,然后在新表中查询2~10行既可

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答