1 假如有100条数据,我想把其中10-15条,或者45-50条,或者65-70条显示在网页上,该怎么解决?最好有文字说明,有逻辑代码! 谢了!
--
首先 严格意义上讲,你这个不像是分页,到想是只取部分数据,而10-15或者45-50是手动输入的还是由控件的分页来选择的,不太清楚
(1)如果是手动输入10-15或者45-50,则执行sql语句就OK了
SQL语句:
select * from (select top 5 * from (select top 15 * from tb where 条件='取得100条的条件')a )b
where 某个唯一标志 not in
(
(select top 5 某个唯一标志 from (select top 15 * from tb where 条件='取得100条的条件')a )b
)
(2)由控件的分页来得到我获取的是第几页和每页有多少记录,由存储过程来实现
存储过程如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author:
-- Create date: 12 3 2007 8:10AM
-- Description: 自己玩的 哈哈
-- test: fenye 10,0
-- =============================================
ALTER PROCEDURE [dbo].[fenye]
(@pagesize int,@pageindex int)
AS
BEGIN
SET NOCOUNT ON;
declare @tablenew table(id int identity(1,1),t_id int)
declare @tablelower int
declare @tableuper int
set @tablelower=@pagesize*@pageindex
set @tableuper=@pagesize*@pageindex+@pagesize
set rowcount @tableuper
insert @tablenew(t_id)
select t_student.ID_i from t_student where t_student.ID_i>@tablelower
and t_student.ID_i<=@tableuper
order by t_student.ID_i
select t_student.* from t_student inner join @tablenew n on t_student.ID_i=n.t_id
order by t_student.ID_i
END
上例写反了不好意思
这样
select top 5 * from (select top 15 * from table1 order by id desc) order by id asc
实际应用中 15/5 两个重要值通过页大小、当前页码、总记录数等得出
如5即为页大小 15由当前页码和页大小得到 当前页码为3 所以15=5*3
当然会有多种情况 灵活判断