首页 新闻 赞助 找找看

写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的

0
悬赏园豆:10 [已解决问题] 解决于 2012-03-08 23:04

答:解1: selecttop 10 * from A where id not in (select top 30 id from A)

解2: select top10 * from A where id > (select max(id) from (select top 30 id from A )as A)

解答3:用ROW_NUMBER实现

 

求解答3是什么东西????

iia的主页 iia | 初学一级 | 园豆:6
提问于:2012-01-27 12:41
< >
分享
最佳答案
0

http://www.cnblogs.com/tangself/archive/2010/09/29/1838234.html

这位园友有讲过,可以看一下,简单说,对于这个题目,用row_number可以写成这样:

--园友文章中的写法,这也是微软官方文档里的写法
WITH B AS (
SELECT *,ROW_NUMBER() OVER(ORDER BY ID ASC) AS ROW_NUM
FROM A WITH(NOLOCK)
)
SELECT *
FROM B WITH(NOLOCK)
WHERE ROW_NUM BETWEEN 31 AND 40

--我一般这么写
SELECT * FROM (
SELECT *,ROW_NUMBER() OVER(ORDER BY ID ASC) AS ROW_NUM
FROM A WITH(NOLOCK)
) B
WHERE ROW_NUM BETWEEN 31 AND 40
收获园豆:10
丁学 | 专家六级 |园豆:18730 | 2012-01-27 13:24
其他回答(1)
0

楼上不错,其实也就是内置的一个东西吧,oracle可以直接用rownum。。。

顾晓北 | 园豆:10844 (专家六级) | 2012-01-29 14:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册