SELECT TOP 1000 * FROM table1 WHERE id NOT IN ( SELECT TOP 1000*(页数-1) id FROM table1 ORDER BY id ) ORDER BY id
SELECT TOP 页大小 * FROM table1 WHERE id > ( SELECT ISNULL(MAX(id),0) FROM ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id ) A ) ORDER BY id
分页有多种思路,最简单的order by + fetch/top,分页提取
newidwhere isnull(left(cast(newid as varchar),len(cast(newid as varchar))-3),'0') = 页
select top 1000 * from sparebase where (spareid > (select top 1 (spareid) from (select top 1000 spareid from sparebase order by spareid) a order by spareid desc)) order by spareid
数据库(Access\Oracle\MSSQL)都不告诉是什么,怎么告诉你方法?
limit 0, 1000 limit 1000, 1000 ??
我想将一张表中的数据分批加载。 “加载”两个字和楼上的各位可能理解不同。 不知道楼主是不是只是想将数据表分批加载到内存中以提高效率,而不是显示出来。 如果是这样的话,那么没有必要去分页,只需要Select * From Table即可。但是在控件上需要做些调整: 设置数据库控件的CursorLocation属性为clUseServer(这个属性将游标放在服务器端,读取数据就不会将查询结果整个儿的传输到客户端内存中) 设置数据库控件的CacheSize为需要的值,比如1000(这个值会涉及到每次加载到内存的数据量)
FROM table1
WHERE id NOT IN
(
SELECT TOP 1000*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id
from sparebase
where (spareid >
(select top 1 (spareid)
from (select top 1000 spareid
from sparebase
order by spareid) a
order by spareid desc))
order by spareid
limit 1000, 1000
??
“加载”两个字和楼上的各位可能理解不同。
不知道楼主是不是只是想将数据表分批加载到内存中以提高效率,而不是显示出来。
如果是这样的话,那么没有必要去分页,只需要Select * From Table即可。但是在控件上需要做些调整:
设置数据库控件的CursorLocation属性为clUseServer(这个属性将游标放在服务器端,读取数据就不会将查询结果整个儿的传输到客户端内存中)
设置数据库控件的CacheSize为需要的值,比如1000(这个值会涉及到每次加载到内存的数据量)