每次只取出固定行數(100分)

  • 主题发起人 主题发起人 abchjb
  • 开始时间 开始时间
A

abchjb

Unregistered / Unconfirmed
GUEST, unregistred user!
請教各位:
在Informix PE版中不支持向SQL Server 中SQL語句:
select top 10 * from mytable;
在BDE中有MAX ROWS設置,但如何使用能達到每次只取
固定數目的紀錄?
 
先在TABLE中得到数据然后用FOR取前10条。 :)
 
不明白,什么样的应用会非要读表的固定条目?
 
这是SQL, 关系数据库的先天不足, 集合运算
涉及到第几了, 几个了, 就很不方便,
下面的语句取出table中的按key 排序的前100条纪录
select * from table c
where c.key>=
(select key from table a
where 99=( select count(*)
from table b
where a.key<b.key))
是不是很繁? 这只是在key 唯一的情况下有效, 如果
正好有多个并列key 或者,没有第100名, 就不能保证正好
100条纪录, 总之, 纯粹的sql 按照关键字来提取纪录.
除非特定的RDBMS的扩展语法支持, 才能较方便的实现
如"第100 到200 条纪录",这样的查询 ;
 
这是SQL, 关系数据库的先天不足, 集合运算
涉及到第几了, 几个了, 就很不方便,
下面的语句取出table中的按key 排序的前100条纪录
select * from table c
where c.key&amp;gt=
(select key from table a
where 99=( select count(*)
from table b
where a.key%ltb.key))
是不是很繁? 这只是在key 唯一的情况下有效, 如果
正好有多个并列key 或者,没有第100名, 就不能保证正好
100条纪录, 总之, 纯粹的sql 按照关键字来提取纪录.
除非特定的RDBMS的扩展语法支持, 才能较方便的实现
如"第100 到200 条纪录",这样的查询 ;
 
Informix PE版中有存储过程,可以这样:
select * from mytable into tmptable(临时表)
以后读数据时,直接打开临时表用for等循环读想要的
数目的记录。
我想这样速度要稍好一些。
 
不知道接不接受SET ROWCOUNT ##

把Max Rows设为##, 如果你的结果集行数>##,那就只返回##行,
不行吗?
 
不知为什么要每次取固定的行数?
 
张兄及3h的办法岂不是大大牺牲效率,要返回固定行数十有八九是忍受不了返回全部
数据的漫长岁月.
用会话期控件动态处理别名,可在程序中控制Max Rows
 
Informix已慢出名,不知为什么会选它.
<marquee>真是奇怪</marquee>
 
请问各位又怎么取出表中间的固定行数呢?
 
我也有这类问题,一直没解决。
 
我来告诉你用BDE方法:
if DataSet.Active then
Check(DbiSetProp(hDBIObj(DataSet.Handle), curMAXROWS, MaxRows))
这里MaxRows就是你想得到的记录数,对任何类型数据库都有效!
 
多人接受答案了。
 
<marquee>奇怪</marquee>
 
后退
顶部