sql从查询结果中选择中间某部分记录

没有主键,假如我查到了1000条记录,我想取其中的第200~300条记录,应该如何查?... 没有主键,假如我查到了1000条记录,我想取其中的第200~300条记录,应该如何查? 展开
 我来答
Milo_WuW
2013-11-05 · 超过30用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:67万
展开全部

我说1个笨方法哈

select top 300 * into #table from table order by 排序条件

delete top 199 * from #table order by 排序条件

select * from #table order by 排序条件


说明:

  1. 这是用虚拟表写的,方法比较笨,简单的铁定会有,你多想想

  2. 我是采取取出来目的记录,然后过滤掉不要的记录,剩下的就是你想要的了

  3. 因为你是要200~300条,所以必须要有按什么来排序的条件,排序不同,结果也不同的


你试试,OK,请采纳

badkano
2013-11-05 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885371
团长

向TA提问 私信TA
展开全部

select t.* from
(select row_number() over (order by 任意字段) rn,表名.* from 表名) t
where rn between 200 and 300

 
什么数据库
sqlserver或oracle的话用上边的吧

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangxiaodi7428
2013-11-05 · TA获得超过313个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:94.9万
展开全部
select * from   
        (select ROWNUM r, userid,username from table_a order by userid) t
         where t.r>=200 and r<= 300;

改一下表名,字段名就行

利用rownum虚列做子查询 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
热情的osfz
2013-11-05
知道答主
回答量:10
采纳率:0%
帮助的人:1.3万
展开全部
select * from [table] limit m,n
select * from [table] limit 200,100
M是从第几行开始,N是+几行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小狂中E
推荐于2018-03-05 · TA获得超过1418个赞
知道大有可为答主
回答量:1514
采纳率:66%
帮助的人:1031万
展开全部
sqlserver:
with t as ( select top 300 row_number() over(order by 字段) r, * from 表)
select * from t where r>=200
oracle:
with t as ( select rownum r, * from 表 where rownum<=300 )
select * from t where r>=200
mysql:
select * from 表 limit 199,100
db2:
with t as ( select row_number() over(order by 字段) r, * from 表 fetch frist 300 rows only)
select * from t where r>=200
其中 sqlserver\oracle\db2也可直接
with t as (select row_number() over(order by 字段) r, * from 表)
select * from t where r between 200 and 300
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式