求一个 分页相关 的 SQL语句 ??

专制的网站 2012-08-06 10:42:20
RT

例如 ,select 某表 ,一共有 800 条数据 。
我要取得上面 800 条数据的 第1--100条数据,第101--200条数据...... 这样的SQL语句怎么写啊 ???

即 ,“select * from 表 where xxx=yyy ???” 蓝色问号处 要怎么写,返回的就是 符合条件的 第1--100条数据 ;再改成怎样 ,返回的就是符合条件的 第101--200条数据 ;......
...全文
147 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
codewaggon 2012-10-18
  • 打赏
  • 举报
回复
rs里面不是有PageSize吗?
cdma2545 2012-10-10
  • 打赏
  • 举报
回复
这样的分页语句 有删除就悲剧了不是
ACMAIN_CHM 2012-08-08
  • 打赏
  • 举报
回复
[Quote]例子二 : 如果是三层模式之类的程序的话 ,例如 网页代码(ASP、php等)操作数据库 。
网站代码写好放好 ,某一客户通过ie访问这个网站 ,要求得到数据库数据 ,同样也是执行的这句语句 “select * from (select top 100 * from (select top 2000000 * from tb order by ID) order by ID desc) order by ID ” ,那客户的 ie 得到的数据是什么? 是 100条的数据量?还是 2000000 条的数据量?
还是 Access 和 SQL 一样有区别 ??(Access是整个文件数据,SQL是100条的数据量??)[/Quote]
IE得到 100 条。
ACMAIN_CHM 2012-08-08
  • 打赏
  • 举报
回复
[Quote]例子一 : C++ 写了个程序 A.exe 。A.exe 操作数据库 执行语句“select * from (select top 100 * from (select top 2000000 * from tb order by ID) order by ID desc) order by ID ” 。
此种情况中 如果数据库是 Access的话 ,A.exe 就会得到整个数据库的内容(不管是执行的什么语句) ?? 但是如果是 SQL的话,A.exe 只会得到 100 条数据的内容 ???[/Quote]

A.exe 中你会使用 ADO或者其它方式提交语句, 这个语句的处理并不是你的代码来执行,是ADO的数据库驱动来执行。你的程序调用数据库对象得到的结果集仍然只是 100 条记录。但数据库驱动需要打开整个数据库进行搜索。
WWWWA 2012-08-08
  • 打赏
  • 举报
回复
是这样,ACCESS与SQLSERVER无法比
专制的网站 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
1、
如果数据库是 Access的话 ,A.exe 就会得到整个数据库的内容(不管是执行的什么语句) ??

是2000000条记录

2、
那客户的 ie 得到的数据是什么? 是 100条的数据量?还是 2000000 条的数据量?

是 2000000 条的数据量
[/Quote]
悲了个剧 ,如果是 SQL 的话,就都是 100 条的数据量了不???
WWWWA 2012-08-08
  • 打赏
  • 举报
回复
1、
如果数据库是 Access的话 ,A.exe 就会得到整个数据库的内容(不管是执行的什么语句) ??

是2000000条记录

2、
那客户的 ie 得到的数据是什么? 是 100条的数据量?还是 2000000 条的数据量?

是 2000000 条的数据量
ACMAIN_CHM 2012-08-08
  • 打赏
  • 举报
回复
要正确回答这个问题,需要BS的基础知识,比如简单ASP知识。

楼主可以到CSDN的网站开发的版块咨询验证一下。

https://forum.csdn.net/BList/WebDevelop/
Web 开发

https://forum.csdn.net/BList/PHP/
PHP

https://forum.csdn.net/SList/ASPDotNET/
ASP.NET

专制的网站 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
IE得到 100 条。[/Quote]
[Quote=引用 11 楼 的回复:]
2、
那客户的 ie 得到的数据是什么? 是 100条的数据量?还是 2000000 条的数据量?

是 2000000 条的数据量
[/Quote]
悲剧哦~~ 两位都很厉害... 客户的 ie 得到的数据量 到底是 100 条还是 2000000 ??
专制的网站 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
应该是放到客户端了,200条记录
[/Quote]
那如果这样的话,我要取 第1999901-2000000 的100条数据 ,应该就是这句语句
select * from
(select top 100 * from (select top 2000000 * from tb order by ID) order by ID desc) order by ID
那岂不是 2000000 条数据都会到客户端??
WWWWA 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:
SQL code


select * from
(select top 100 * from (select top 200 * from tb order by ID) order by ID desc) order by ID



有个疑问,调用这样的语句 ,从 服务器端 到 客户端 的数据是只有 100 条吧 ??
不会是 select ……
[/Quote]
应该是放到客户端了,200条记录
WWWWA 2012-08-07
  • 打赏
  • 举报
回复
select top [每页N条记录] * from (select top [每页N条记录]*[页号] * from tt order by id)
order by id desc

专制的网站 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
SQL code


select * from
(select top 100 * from (select top 200 * from tb order by ID) order by ID desc) order by ID
[/Quote]


有个疑问,调用这样的语句 ,从 服务器端 到 客户端 的数据是只有 100 条吧 ??
不会是 select top 200 * from tb order by ID 的数据都到了 客户端吧??
专制的网站 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
是的。其它数据库是,CLINET提交SQL语句到服务器,SERVER进行分析优化处理,在SERVER中得到结果集然后发送到CLIENT。

而ACCESS是个文件,你的CLIENT先需要打开这个文件,然后CLIENT进行查询, 在这个查询是在你的CLIENT中进行的。
[/Quote]
这个 我不太理解 。我举个例子,请你帮我看下吧 。

例子一 : C++ 写了个程序 A.exe 。A.exe 操作数据库 执行语句“select * from (select top 100 * from (select top 2000000 * from tb order by ID) order by ID desc) order by ID ” 。
此种情况中 如果数据库是 Access的话 ,A.exe 就会得到整个数据库的内容(不管是执行的什么语句) ?? 但是如果是 SQL的话,A.exe 只会得到 100 条数据的内容 ???

例子二 : 如果是三层模式之类的程序的话 ,例如 网页代码(ASP、php等)操作数据库 。
网站代码写好放好 ,某一客户通过ie访问这个网站 ,要求得到数据库数据 ,同样也是执行的这句语句 “select * from (select top 100 * from (select top 2000000 * from tb order by ID) order by ID desc) order by ID ” ,那客户的 ie 得到的数据是什么? 是 100条的数据量?还是 2000000 条的数据量?
还是 Access 和 SQL 一样有区别 ??(Access是整个文件数据,SQL是100条的数据量??)


上面两个 例子,请帮忙指教下,谢谢
ACMAIN_CHM 2012-08-07
  • 打赏
  • 举报
回复
是的。其它数据库是,CLINET提交SQL语句到服务器,SERVER进行分析优化处理,在SERVER中得到结果集然后发送到CLIENT。

而ACCESS是个文件,你的CLIENT先需要打开这个文件,然后CLIENT进行查询, 在这个查询是在你的CLIENT中进行的。
专制的网站 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
没办法,ACCESS就是这样。另外ACCESS是文件型数据库,和其它不同, 你的数据都会到客户端。
[/Quote]
意思是 别的 如 SQLSERVER 甲骨文 等 就不会?
ACMAIN_CHM 2012-08-07
  • 打赏
  • 举报
回复
没办法,ACCESS就是这样。另外ACCESS是文件型数据库,和其它不同, 你的数据都会到客户端。
rucypli 2012-08-06
  • 打赏
  • 举报
回复
取101到200就是取top200翻转之后再取top100
筱筱澄 2012-08-06
  • 打赏
  • 举报
回复
	
select * from
(select top 100 * from (select top 200 * from tb order by ID) order by ID desc) order by ID

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧