我的语句如下:
select * from 
(select a.*, ROWNUM RN FROM 
(select p.id productid, p.name pname, p.descr pdescr, p.normalprice,  p.memberprice, p.pdate, p.categoryid , c.id categoryid, c.name cname, c.descr cdescr, c.pid, c.cno, c.grade  from product p join category c on (p.categoryid = c.id) order by p.pdate desc) 
a WHERE ROWNUM <= 0) WHERE RN > 2一直报ora:00918错误,未明确定义列,找了半天还是找不出原因,请帮忙解决。

解决方案 »

  1.   

    先执行  select p.id productid, p.name pname, p.descr pdescr, p.normalprice,  p.memberprice, p.pdate, p.categoryid , c.id categoryid, c.name cname, c.descr cdescr, c.pid, c.cno, c.grade  from product p join category c on (p.categoryid = c.id) order by p.pdate desc看没有没有问题在执行select a.productid, ROWNUM RN FROM 
    (select p.id productid, p.name pname, p.descr pdescr, p.normalprice,  p.memberprice, p.pdate, p.categoryid , c.id categoryid, c.name cname, c.descr cdescr, c.pid, c.cno, c.grade  from product p join category c on (p.categoryid = c.id) order by p.pdate desc) 
    a WHERE ROWNUM <= 0在执行全部看看啊,select * 换成具体的列明试试
      

  2.   

    select * from 
    (select a.*, ROWNUM RN FROM 
    (select p.id productid, p.name pname, p.descr pdescr, p.normalprice,  p.memberprice, p.pdate, p.categoryid , c.id categoryid, c.name cname, c.descr cdescr, c.pid, c.cno, c.grade  from product p join category c on (p.categoryid = c.id) order by p.pdate desc) 
    a WHERE ROWNUM <= 0) WHERE RN > 2 这红色标识的是相同的,当a.*时,是区分不开的