标题: IBM AS 400 DB2数据库记录集分页返回的问题 [打印本页] 作者: conjee 时间: 2003-02-18 16:04 标题: IBM AS 400 DB2数据库记录集分页返回的问题 我用RRN()函数,比如
select * from tablea where rrn(tablea)>;=1 and rrn(tablea)<=100
返回正确
但是我用
select * from tablea where cola='aaa' and colb='cc' and rrn(tablea)>;=1 and rrn(tablea)<=100
什么记录都不返回,但是表中确实有满足条件的记录
并且
select * from tablea where rrn(tablea)>;=1 and rrn(tablea)<=100
order by colc desc
并不是按照colc记录顺序返回
这个问题怎么解决,或者用别的方式怎么来实现,谢谢大家作者: 大连老K 时间: 2003-02-18 17:29 标题: IBM AS 400 DB2数据库记录集分页返回的问题 cola和colb字段会不会有空格
你试试
select * from tablea where cola like 'aaa' and colb like 'cc' and rrn(tablea)>;=1 and rrn(tablea)<=100
如果有记录,想想如何去掉字段中空格作者: conjee 时间: 2003-02-18 17:42 标题: IBM AS 400 DB2数据库记录集分页返回的问题 苦恼!!高人指点作者: ddmmdd 时间: 2003-02-19 09:09 标题: IBM AS 400 DB2数据库记录集分页返回的问题 我觉的是不是应该这样写:
select * from (select * from tablea where rrn(tablea)>;=1 and rrn(tablea)<=100 ) where cola='aaa' and colb='cc'作者: conjee 时间: 2003-02-19 09:23 标题: IBM AS 400 DB2数据库记录集分页返回的问题 不对,400数据库报错,而且逻辑不对,我是要在满足cola='aaa' and colb='cc'的条件下取其中的N条记录作者: ddmmdd 时间: 2003-02-19 09:53 标题: IBM AS 400 DB2数据库记录集分页返回的问题 select * from (select * from tablea where cola='aaa' and colb ='cc') where rrn(select * from tablea where cola='aaa' and colb ='cc')>;=1 and rrn(select * from tablea where cola='aaa' and colb ='cc')<=100
没有400的环境,没法试,只是这样想。作者: neo2718 时间: 2003-02-19 16:17 标题: IBM AS 400 DB2数据库记录集分页返回的问题 SELECT * FROM TABLEA WHERE cola='aaa' and colb='cc'
FETCH FIRST N ROWS ONLY.
应该能满足你的要求。(环境OS/400 V5R1)作者: conjee 时间: 2003-02-19 16:33 标题: IBM AS 400 DB2数据库记录集分页返回的问题 只能满足在条件cola='aaa' and colb='cc' 下取最前面的N条的记录,假如满足条件cola='aaa' and colb='cc' 的记录有3N条的话,我要取第N+1到2N条之间的记录该怎么来实现呢?迷茫啊作者: conjee 时间: 2003-02-19 16:49 标题: IBM AS 400 DB2数据库记录集分页返回的问题 请neo2718再指点,谢谢!!作者: neo2718 时间: 2003-02-19 17:00 标题: IBM AS 400 DB2数据库记录集分页返回的问题 取决你的排序,如果你要用cola的升序或者降序取n+1-->;2n之间的纪录,还是写程序吧。rrn()不是你所需要的。因为用sql来create table的时候默认的选项为 Reuse deleted records . . . . . . . . . . . : REUSEDLT *YES
用dspfd 可以看到上面的选项。作者: conjee 时间: 2003-02-19 17:46 标题: IBM AS 400 DB2数据库记录集分页返回的问题 原来就是编程实现的,当记录数比较大的情况,就比较慢,现在想改进一下作者: aura 时间: 2003-02-19 19:33 标题: IBM AS 400 DB2数据库记录集分页返回的问题 能不能试着用row_number()
select * from (select row_number() over (order by colc) id,
tablea.* from tablea where cola='aaa' and colb='cc') a
where id >;=:N1 and id <=:N2
通过传递N1、N2参数,应该可以满足按colc排序的条件。性能没有条件测试,而且也不知道AS400是否支持row_number().作者: aura 时间: 2003-02-19 19:35 标题: IBM AS 400 DB2数据库记录集分页返回的问题 补充一下,row_number() over(order by colc desc)作者: conjee 时间: 2003-02-20 09:55 标题: IBM AS 400 DB2数据库记录集分页返回的问题 400不支持这个语法,TMD,400作者: aura 时间: 2003-02-20 10:20 标题: IBM AS 400 DB2数据库记录集分页返回的问题 用存储过程返回结果集试试性能能否满足