DB2 的分页

Hibernate 是这么实现的(我怀疑Hibernate不支持 distinct,但是,没有实际试过)

select * from 
    (select rownumber() over(order by AC_CHANGE_TIME desc, AC_REF_NAME, AC_USR_NICK) as PAGINATE_COL_ROWNBR,  AC_CHANGE_TIME, AC_REF_NAME, AC_USR_NICK, AC_ID, AC_CTL_NBR, AC_USR_NBR, AC_USR_NICK, AC_CATEGORY, AC_SECONDARY_CATEGORY, AC_TABNAME, AC_COLNAME, AC_REF_ID_INTEGER, AC_REF_ID_STRING, AC_PROPERTY_NAME, AC_OLD_VALUE, AC_NEW_VALUE, AC_DETAILS  
        from ei.REPLACEDTABLENAME where AC_CTL_NBR = 3295 order by AC_CHANGE_TIME desc, AC_REF_NAME, AC_USR_NICK)
         PAGINATE_TABLE_TMPNAME
where PAGINATE_COL_ROWNBR between ? and ?;

下面的实现支持 distinct 总共需要3个select

select * from 
    (select PAGINATE_TABLE_TMPNAME.*, rownumber() over() as PAGINATE_COL_ROWNBR 
     from (select   AC_CHANGE_TIME, AC_REF_NAME, AC_USR_NICK, AC_ID, AC_CTL_NBR, AC_USR_NBR, AC_USR_NICK, AC_CATEGORY, AC_SECONDARY_CATEGORY, AC_TABNAME, AC_COLNAME, AC_REF_ID_INTEGER, AC_REF_ID_STRING, AC_PROPERTY_NAME, AC_OLD_VALUE, AC_NEW_VALUE, AC_DETAILS  
                            from ei.REPLACEDTABLENAME where AC_CTL_NBR = 3295 order by AC_CHANGE_TIME desc, AC_REF_NAME, AC_USR_NICK
                                fetch first <<first_rows>> rows only)
    PAGINATE_TABLE_TMPNAME )
where PAGINATE_COL_ROWNBR between ? and ?;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值