获取sql serverl数据库第10到20条数据

selecttop10*fromNewswherenews_class_id=109orderbynews_iddesc----这是获取最新10个数据的sqlserver... select top 10 * from News where news_class_id=109 order by news_id desc
----这是获取最新10个数据的sql server语句。照着这个改就可以了,不要讲理论,我要拷贝过来直接能用的,先谢了
sql="select top 10 * from News where news_class_id=109 order by news_id desc "
我这个好像是access数据库,该怎么写? 你们的版本都不对
展开
 我来答
匿名用户
2013-01-23
展开全部
SQL Server 2008 与以下版本, 可这么写:

SELECT top 10 * FROM
(
select top 20 * from News where news_class_id=109 order by news_id desc

) top_20
order by news_id

SQL Server 2012 可这么写:

select * from News where news_class_id=109 order by news_id desc
OFFSET
10 ROWS
FETCH NEXT
10 ROWS ONLY;
追问

我这个好像是access+asp数据库,该怎么写?
追答
sql="SELECT * FROM ( SELECT  top 10  *  FROM ( SELECT top 20 * FROM News order by news_id desc) order by news_id asc ) order by id desc "
1143253854
2013-01-23
知道答主
回答量:27
采纳率:0%
帮助的人:10.6万
展开全部
select * from(
select *, ROW_NUMBER() OVER(order by news_id desc ) as row from News where news_class_id=109
) a
where row between 10 and 20

这个方式条数可以随便取,比较方便,在sql2005上测试通过
追问

我这个好像是access+asp数据库,该怎么写?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
szm341
推荐于2016-11-15 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5132万
展开全部
2005以上版本适用:
;with cte as(

select *,row_number() over(order by news_id desc)rn from News where news_class_id=109
)select * from cte where rn between 10 and 20

----------------
select top 10 * from News where news_class_id=109
and id not in (select top 10 id from news where news_class_id=109
order by news_id desc)
order by news_id desc
更多追问追答
追问

我这个好像是access+asp数据库,该怎么写?
追答
sql="

select top 10 * from News where news_class_id=109
and id not in (select top 10 id from news where news_class_id=109
order by news_id desc)
order by news_id desc"
把语句换掉喽,尝试一下吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式