这是我的表create table test
(
id number primary key,
title nvarchar2(50),
pubdate timestamp
);
insert into TEST (ID, TITLE, PUBDATE)
values (3640, 'fsdf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3641, 'fsdf', to_timestamp('06-09-1999 00:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'));
insert into TEST (ID, TITLE, PUBDATE)
values (3668, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3660, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3661, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3662, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3663, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3665, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3667, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3669, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3671, 'fsf', null);
commit;
分页语句为
select * from test order by pubdate desc
此时id =3661的记录位于第五条
但是加上rownum后,语句如下
select row_.*, rownum rownum_ from
(
select * from test order by pubdate desc
) row_
where rownum <=?
当问号的值 为 4-10 时,3661都显示在最后一行,根据上面的语句判断,这条记录应该显示在第五行的呀?
注意我的日期列为null,如果不为null则一切正常,哪位高手能够解释~~
(
id number primary key,
title nvarchar2(50),
pubdate timestamp
);
insert into TEST (ID, TITLE, PUBDATE)
values (3640, 'fsdf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3641, 'fsdf', to_timestamp('06-09-1999 00:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'));
insert into TEST (ID, TITLE, PUBDATE)
values (3668, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3660, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3661, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3662, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3663, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3665, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3667, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3669, 'fsf', null);
insert into TEST (ID, TITLE, PUBDATE)
values (3671, 'fsf', null);
commit;
分页语句为
select * from test order by pubdate desc
此时id =3661的记录位于第五条
但是加上rownum后,语句如下
select row_.*, rownum rownum_ from
(
select * from test order by pubdate desc
) row_
where rownum <=?
当问号的值 为 4-10 时,3661都显示在最后一行,根据上面的语句判断,这条记录应该显示在第五行的呀?
注意我的日期列为null,如果不为null则一切正常,哪位高手能够解释~~
一般rownum都不作为条件使用,你可以这样: select *
(
select test.*,rownum rn from test order by pubdate desc
) row_
where rn<=?