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条的数据 要怎么写 展开
select * from steriworkrecord
where starttime between '2013-11-1' and '2013-12-31'
比如我现在要着结果里面第2条到第10条的数据 要怎么写 展开
1个回答
展开全部
-- 用的啥数据库也不写清楚。。。
-- 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行既可
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询