ORA-00923: 未找到要求的FROM 关键字

在写查询前N条记录时,出现ORA-00923的Error:

查询语句:“SELECT TOP 20 NWID,NWTITLE,NW,NWEDITTIME,NWIMG FROM YW_NEWS ORDER BY NWEDITTIME DESC”

出错提示:Message = "ORA-00923: 未找到要求的 FROM 关键字\n"

表名与关键字之间添加空格了,找不出原因来;而这种存在曲解的查询语句“SELECT NWID,NWTITLE,NW,NWEDITTIME,NWIMG

FROM YW_NEWS WHERE ROWNUM<=20 ORDER BY NWEDITTIME DESC”却可以执行无误。

其他测试情况:

(1)"SELECT TOP 1 NWID,NWTITLE,NW,NWEDITTIME,NWIMG FROM YW_NEWS ORDER BY NWEDITTIME DESC"

Error:the same error

(2)"SELECT NWID,NWTITLE,NW,NWEDITTIME,NWIMG FROM YW_NEWS ORDER BY NWEDITTIME DESC"

Excute ok

难倒是Top关键字出错?

Go on...

(3)"SELECT TOP 2 * FROM YW_NEWS ORDER BY NWEDITTIME DESC"

Error:the same error

推断跟top的记录条数还有选择部分字段or所有字段无关,还可能是什么地方出错呢?

难倒跟ORDER BY 排序的字段有关??

Go on...

(4)“SELECT TOP 2 * FROM YW_NEWS ORDER BY NWID DESC”

Error:the same error

NWID为表的索引,据此推断,跟order by排序的字段无关;那么还能是什么原因呢?

总算知道原因了,原来Oracle不支持TOP N 查询方式,需要用order by和rownum结合实现。。。

修改更新的语句应该为:

SELECT NWID, NWTITLE, NW, NWEDITTIME, NWIMG

  FROM (SELECT * FROM YW_NEWS ORDER BY NWEDITTIME DESC)

 WHERE ROWNUM <= 20

 ORDER BY ROWNUM ASC

测试OK。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHOU_VIP

您的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值