问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql 分页问题

发布网友 发布时间:2022-09-20 16:42

我来回答

3个回答

热心网友 时间:2023-11-03 16:30

http://www.builder.com.cn/2007/0912/501756.shtml
在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页的方式来实现,页面提供诸如上一页,下一页等等按钮来实现分页。

现在主要有以下几中方式来实现分页:

1.EJB的Find方法

2.在显示第一页前将所有的记录放在collection对象中,后续的各页都在内存中取。

3.每一页都到数据库作一次重复的查询,然后将符合条件的记录显示出来。

4.保存前几页的搜索结果在内存中(经常使用到的),后续的记录(这些数据是多数用户都没有耐心看的)再通过连数据库取得。

5.其他各种cache机制。

我们可以根据实际情况来选择适合自己的方法,我给大家介绍一个通过标准的SQL语句来得到符合条件的数据。如从第10到20条的符合条件(where语句中的)的记录。通过这种方法取得记录有一个必要条件,必须有一个能够标识记录顺序的字段,如id,time等等。下面我为大家演示一个例子:

查询t_table表中所有记录第10到20条,按id排序。

SQL语句为:

SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id ) > = 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id ) < 20

又如查询t_table表中key='123'第10到20条的记录,按id排序。

SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id AND t2.key = '123') > = 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id AND t2.key = '123') < 20 AND t1.key = '123'

当然条件中的id可以换为任何能标识记录顺序的字段。

http://www.builder.com.cn/2007/0912/501756.shtml

热心网友 时间:2023-11-03 16:31

drop table ItemData

create table [ItemData] (
[code] [char] (2) not null ,
[date] [datetime] not null ,
[iCode] [char] (11) not null ,
[itCode] [varchar] (20) not null ,
[cCode] [varchar] (10) not null ,
[pCode] [varchar] (10) not null ,
[fCode] [char] (2) null ,
[mvalue] [varchar] (50) null ,
[sys1] [varchar] (100) null ,
[sys2] [varchar] (100) null ,
-- constraint [pk_itemdata] primary key clustered
-- (
-- [code],
-- [date],
-- [iCode],
-- [itCode],
-- [cCode],
-- [pCode]
-- ) on [primary]
) --on [primary]
go

insert into ItemData(code,date,iCode,itCode,cCode,pCode)

select '03','2006-06-30 00:00:00.000','5','C1P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C2P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C3P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C4P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C5P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C6P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C7P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C8P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C9P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C10P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C11P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C12P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C13P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C14P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C15P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C16P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C17P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C18P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C19P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C20P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C21P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C22P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C24P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C25P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C26P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C27P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C29P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C30P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C31P','o','01'
union all
select '03','2006-06-30 00:00:00.000','5','C32P','o','01'

create proc page
(
@pageSize int,
@startIndex int,
@orderByString varchar(200)
)
as
declare @sql varchar(8000)
set @sql = ''
begin
select @sql = @sql + 'select top '
select @sql = @sql + ''+cast(@pageSize as varchar(10))+'' + ' * from (select * from ItemData) A where convert(varchar(10),A.date ,101)+A.iCode+A.itCode+A.cCode+A.pCode Not In '
select @sql = @sql + ' (select top '+cast(@startIndex as varchar(10))+' convert(varchar(10),date ,101)+iCode+itCode+cCode+pCode from ItemData)'
select @sql = @sql + ' order by '+@orderByString+''

end
exec (@sql)

exec page '10','10','date,iCode,itCode,cCode,pCode'

热心网友 时间:2023-11-03 16:31

SELECT TOP pagesize *FROM table---这句语法就是个错误

SELECT--查询,固定格式
TOP--是选出前几列
pagesize--是你表里字段名
*--这里看似是多余的,pagesize和*只可认选其一
FROM--从哪张表选,固定格式
table--表名

正常该这么写
SELECT TOP pagesize FROM table order by 某字段
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女人梦见蛇的七大预兆解梦 PHOTOSHOP 怎么把眼睛点大 这些月销量10000+的防晒霜,是噱头还是真的好用? 大宝水凝保湿防晒露适合哪些肤质的人使用? 拥有人口过亿的国家最多的大洲是( )A.非洲B.亚洲C.欧洲D.大洋 世界国家最多的大洲是:( ) A.亚洲 B.大洋州 C.非洲 D.欧 拥有人口过亿的国家最多的大洲是:( ) A.非洲 B.亚洲 C.欧洲 D.大洋 餐厅一般中餐都有哪些摆台要求和标准 如何做味道正宗的中餐? 河南文科跟理科高考分数线相差多少 恶作剧之吻动漫去旅游的是第几集 手机号被别人的绑定怎么办? 鼻炎长期服用什么中药为好? 鼻炎用的四味中药 各位大侠帮忙取个名字:龙凤胎,爸爸姓孙,妈妈姓高,希望名字的第一个字相同,第二个字既能体现是男女, 支付宝第三方说要自己上门核实合法吗-支付宝第三方催收爆通讯录要去哪里投诉 眼睛红,平时用眼不多,但是有甲亢,能用良济叶黄素蒸汽眼罩吗? 比亚迪唐怎么样优缺点 茶叶可以生吃吗? 比亚迪唐到底怎么样? 手机故障为维修的方法有哪些 维修汽车的方法与技巧有哪些 想问与外存相比较而言内存的特点是 请问与外存相比较而言内存的特点是 汽车维修有哪些方法 只知道怎么找抖音 《安娜·卡列尼娜》摘录 阳泉能做亲子鉴定吗? 阳泉市第十四中学录取分数线什么时候公布 阳泉市第十四中学 .NET 集合(Collection)查询总数的问题 关于C# collection的问题 恶作剧之吻动漫版男主角第几集求婚的 华为sdh光口怎么修改j1字节 《恶作剧之吻2》湘琴和直树在一起了,他们生孩子是哪一集? 太容易让自己牺牲什么歌 错的人歌词萧亚轩 下列不是酸雨的危害的是 A.使土壤中的养分发生化学变化 B.使河流、湖泊、水源酸化 C.直接危 下列不是酸雨的危害的是: A.使土壤中的养分发生化学变化 B.使河流、湖泊、水源酸化 C.直接危害植物 微信被封上面显示已解冻还为何不能正常使用? 中考英语写作77个优美句子 中考英文写作满分佳句短语 微信群主怎样删除群里成员发出的信息? 合婚的十二生肖的相配表,生肖配对表年份 十二生肖属相相合的表,最准的12生肖配对表? 十二生肖相合表 在马来西亚生活要知道哪些事儿呢?马来西亚当地流通什么货币呢? 百度贴吧会有很多台湾人跟香港人还有马来西亚人看吗 放射性核素治疗ppt是什么意思? qq消息声音怎么关闭 淘宝退货退款自动回复语言