如下的语句:select * from (select top 1 * from (select top 8  pt_article.pt_articleid, pt_article.title,  pt_article.creator,pt_channel.channelname, pt_article.createdate, pt_article.keywords,  'oper' as noname1,pt_article_channel.pt_article_channelid from pt_article , pt_article_channel , pt_channel   where pt_article.pt_articleid = pt_article_channel.pt_articleid  and pt_article_channel.pt_channelid = pt_channel.pt_channelid and pt_article_channel.state=4 order by  pt_article.createdate desc) as t1 order by createdate asc) as t2 order by createdate desc这个语句在SQLSERVER里面可以执行.在ORACLE里面显示找不到预期FROM关键字.
求助高手把以上语句改为ORACLE能运行的语句.

解决方案 »

  1.   

    ORACLE不支持top 1这样的写法,类似的功能是:where rownum<2
      

  2.   

    select * from 
    (select  * from 
    (select  pt_article.pt_articleid, pt_article.title,  
     pt_article.creator,pt_channel.channelname, pt_article.createdate, pt_article.keywords, 
     'oper' as noname1,pt_article_channel.pt_article_channelid 
     from pt_article , pt_article_channel , pt_channel   
     where pt_article.pt_articleid = pt_article_channel.pt_articleid  
     and pt_article_channel.pt_channelid = pt_channel.pt_channelid 
     and pt_article_channel.state=4 and rownum<9
     order by  pt_article.createdate desc) as t1 and rownum<2 order by createdate asc) as t2 
     order by createdate desc
      

  3.   

    上面写错
    select * from 
    (select  * from 
    (select  pt_article.pt_articleid, pt_article.title,  
     pt_article.creator,pt_channel.channelname, pt_article.createdate, pt_article.keywords, 
     'oper' as noname1,pt_article_channel.pt_article_channelid 
     from pt_article , pt_article_channel , pt_channel   
     where pt_article.pt_articleid = pt_article_channel.pt_articleid  
     and pt_article_channel.pt_channelid = pt_channel.pt_channelid 
     and pt_article_channel.state=4 and rownum<9
     order by  pt_article.createdate desc) t1 where rownum<2 order by createdate asc) t2 
     order by createdate desc