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

代码:select*fromsteriworkrecordwherestarttimebetween'2013-11-1'and'2013-12-31'比如我现在要着结果... 代码:
select * from steriworkrecord
where starttime between '2013-11-1' and '2013-12-31'
比如我现在要着结果里面第2条到第10条的数据 要怎么写
展开
 我来答
忠生雅0e
推荐于2017-11-26
知道答主
回答量:12
采纳率:0%
帮助的人:15万
展开全部

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


-- 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行既可
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式