日期:2014-05-18  浏览次数:20478 次

来个高手帮我解决一下这问题 sql 分页取每页最后一条
sql 分页取每页最后一条

table1

id name ...
1 s
2 c
3 b
4 d
6 s
8 t
9 a
10 cc
11 tt
13 ss

14 e
15 b
16 u
17 9
18 jj
19 pp
20 to
21 tb
22 tu

23 uc
24 ue
25 ub
26 yk
.........

id是有序的,但不是连续的,现在分页,每页取10条,按id排序,想得到每一中最大的id结果如下:

table1
13
22
....

------解决方案--------------------
探讨
大侠
最后不足10条的那页怎么取。。

引用:
SQL code

;WITH CTE AS (
SELECT * ,ROW_NUMBER() OVER (ORDER BY ID) AS NUM
FROM TABLE1
WHERE ...
)
SELECT ID FROM CTE
WHERE NUM % 10 = 0

------解决方案--------------------
SQL code
drop table #table1
create table #table1(id int, name varchar(20))

insert #table1 values(1, 's')
insert #table1 values(2, 'c')
insert #table1 values(3, 'b')
insert #table1 values(4, 'd')
insert #table1 values(6, 's')
insert #table1 values(8, 't')
insert #table1 values(9, 'a')
insert #table1 values(10, 'cc')
insert #table1 values(11, 'tt')
insert #table1 values(13, 'ss')

insert #table1 values(14, 'e')
insert #table1 values(15, 'b')
insert #table1 values(16, 'u')
insert #table1 values(17, '9')
insert #table1 values(18, 'jj')
insert #table1 values(19, 'pp')
insert #table1 values(20, 'to')
insert #table1 values(21, 'tb')
insert #table1 values(22, 'tu')
insert #table1 values(23, 'uc')

insert #table1 values(24, 'ue')
insert #table1 values(25, 'ub')
insert #table1 values(26, 'yk')

drop table #
select (ROW_NUMBER() over(order by id)-1)/10 as rowNo, id, name into # from #table1
select * from # a where id=(select max(id) from # where rowNo=a.rowNo)