Oracle使用fetch first子句报错:ORA-00933 SQL命令未正确结束

问题背景

今天在统计终端厂商告警次数Top10的时候使用SQL查询使用到了fetch first子句,结果执行报错:ORA-00933 SQL命令未正确结束。

报错原因

Oracle数据库中,使用 FETCH FIRST 子句需要启用 Oracle 12c 及以上版本。如果在较低版本的 Oracle中使用FETCH FIRST 子句则会报错。如图(公司是内网环境开发,无法访问外网,截图没办法传到手机上,只能拍照记录):

解决方案

通过子查询和 ROWNUM 来实现同样的功能,代码如下:

sql 复制代码
SELECT vendor_name, total_faults
FROM (
    SELECT vendor_name, SUM(fault_count) AS total_faults
    FROM your_table_name
    GROUP BY vendor_name
    ORDER BY total_faults DESC
)
WHERE ROWNUM <= 10;

成功查询到期望数据 :

注:图片数据均为研发环境模拟数据,如有雷同纯属巧合。

相关推荐
Navicat中国13 分钟前
Navicat 高频问题速解:PostgreSQL / MySQL / SQL Server / MongoDB / 达梦
数据库·mysql·mongodb·postgresql·navicat
咖啡の猫26 分钟前
Python中的输出函数
开发语言·数据库·python
零基础的修炼34 分钟前
MySQL---C/C++链接
数据库·mysql
rannn_1111 小时前
【Javaweb学习|黑马笔记|Day5】Web后端基础|java操作数据库
数据库·后端·学习·javaweb
q***99631 小时前
如何查看PostgreSQL的版本
数据库·postgresql
Jaising6661 小时前
MySQL 与 Clickhouse 多数据源切换技术分析
数据库·后端·mybatis
装不满的克莱因瓶2 小时前
【Java架构师体系课 | MySQL篇】③ Explain执行计划详解
java·数据库·mysql·架构·优化·索引·explain
爱奥尼欧2 小时前
【QT笔记】常用控件——QWidget 核⼼属性
数据库·笔记·qt
q***98522 小时前
Spring Boot 中使用 @Transactional 注解配置事务管理
数据库·spring boot·sql
数据知道3 小时前
MySQL:mysql中将表中数据进行删除后,多久空间会被释放出来?
数据库·mysql