关于oracle的分页查询

w62947269apple 2012-10-19 04:35:39
select b.* from (select a.*,rownum rnum from (select * from (select dp.*,db.* from d_category_product dcp join d_product dp on(dcp.product_id=dp.id) join d_book db on(dp.id=db.id) where dcp.cat_id=1)) a where rownum<=2)b where rnum>=1;
第 1 行出现错误:
ORA-00918: 未明确定义列

求大神帮助,下面是3个表

CREATE TABLE d_product (
id number(12) NOT NULL PRIMARY KEY,
product_name char(100) NOT NULL,
description char(100) default NULL,
add_time number(20) default NULL,
fixed_price number(10,2) NOT NULL,
dang_price number(10,2) NOT NULL,
keywords char(200) default NULL,
has_deleted number(1) default '0',
product_pic char(200) default NULL);

CREATE TABLE d_book (
id number(12) NOT NULL PRIMARY KEY,
author char(200) NOT NULL,
publishing char(200) NOT NULL,
publish_time number(20) NOT NULL,
word_number char(15) default NULL,
which_edtion char(15) default NULL,
total_page char(15) default NULL,
print_time number(20) default NULL,
print_number char(15) default NULL,
isbn char(25) default NULL,
author_summary varchar2(200) NOT NULL,
catalogue varchar2(200) NOT NULL);

CREATE TABLE d_category_product (
id number(12) NOT NULL PRIMARY KEY,
product_id number(10) NOT NULL,
cat_id number(10) NOT NULL);
...全文
63 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy-W 2012-10-19
  • 打赏
  • 举报
回复
你写的子查询语句有问题,
rownum是一个伪列,你没有指明返回伪列,使用"*"是无法返回伪列的,在Oracle里面分页最快的是结合rowid和rownum使用,e.g.

select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from
t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
汤姆克鲁斯 2012-10-19
  • 打赏
  • 举报
回复
oracle的你去oracle专区问吧

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧