为什么SQL语句查询top功能无效?

wuqiwyt 2014-10-14 09:32:40
用SQL语句查询表内容正常,但是用top函数时就无法查询,是不是数据库不支持啊,因为数据库在省局,我这里只是客户查询端,我看自己的机子显示是oracle9i精简版。见下图
dm_sksx表

然后显示正常的查询结果:


然后使用top查询时就会出现错误:




这是怎么回事呢?
...全文
547 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2014-10-15
  • 打赏
  • 举报
回复
你这不是mssql数据库,所以不行。
卖水果的net 版主 2014-10-15
  • 打赏
  • 举报
回复
用 2# 的方法,有一点要注意。 sql server 的 top N 和 order by 配合使用时,先 order by 后 top N oracle 使用 ROWNUM<=5 和 order by 时,是先 rownum <= 5 后 order by ,解决的方法是 使用子查询。
还在加载中灬 2014-10-15
  • 打赏
  • 举报
回复
是不是服务器对查询做了时间限制? 我想没有人会去做这种限制吧 感觉应该是并发访问的问题,所以应该不是,如果服务器是内网的,那更不是了 白天快晚上慢,10点半以后又快了,这应该是晚上10点半之前的人访问的比较多~~ 查询某个月的记录是可以查询的,如果查询6个月的记录就会半天没反应 查询某个月,因为6个月跨度比较大,数据量比较多,加上并发访问较多,可能因此速度很慢以至没反应~~ 优化的话,我想可以通过以下方式处理 1、如果是比较以前的记录,已经不需要修改,可以做定时任务定时统计插入到中间表,这样,你查以前的数据就不用再统计,而直接从中间表读取,那速度可以快N倍~~ 2、考虑建一个,这相查询语句用到的所有字段的联合索引~~ 3、尝试将这些常用的查询,建成存储过程或视图,速度有时也会提高
wuqiwyt 2014-10-15
  • 打赏
  • 举报
回复
谢谢楼上的朋友们,用rownum解决了问题。分少不能多给大家,抱歉。
wuqiwyt 2014-10-14
  • 打赏
  • 举报
回复
引用 2 楼 ky_min 的回复:
TOP是MSSQL的 ORACLE参考
SELECT * FROM dm_sksx WHERE ROWNUM<=5
谢谢,您总能帮我想出办法来啊!还有一个问题顺便请教一下,县局客户端白天查询没什么问题,但是用市局用户进行SQL语句查询时如果时间跨度过大就查询不了,例如查询某个月的记录是可以查询的,如果查询6个月的记录就会半天没反应,像死了机似的,但是到了晚上10点半以后,查询的速度就突然飞快,就像闸水放开一下。是不是服务器对查询做了时间限制?这个能从技术上限制吗?
wuqiwyt 2014-10-14
  • 打赏
  • 举报
回复
引用 1 楼 reenjie 的回复:
oracle 不支持select top
哦,原来是这样啊
还在加载中灬 2014-10-14
  • 打赏
  • 举报
回复
TOP是MSSQL的 ORACLE参考
SELECT * FROM dm_sksx WHERE ROWNUM<=5
reenjie 2014-10-14
  • 打赏
  • 举报
回复
oracle 不支持select top

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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