Chinaunix

标题: 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数据库记录集分页返回的问题
用存储过程返回结果集试试性能能否满足




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2