【发布时间】:2020-01-23 12:18:49
【问题描述】:
我是数据库新手,已经开始学习 SQL。 我正在尝试将 MySQL 查询转换为使用 oracle 数据库。
我正在使用 Oracle 11g 速成版并尝试了许多不同的答案,但都失败了。不知道为什么oracle的SQL里没有limit子句
这是它在 MYSQL 中的样子:
select *
from emp
order by sal desc
limit 1,1
我已经看到很多关于如何在 oracle 中使用 rownum 转换限制的答案,但找不到如何写入偏移量。
我从 StackOverflow 获得了解决方案:
select * from emp
order by sal desc
OFFSET 1 ROW FETCH NEXT 1 ROW ONLY;
但它给出了以下错误:
ORA-00933:SQL 命令未正确结束
谁能给我一些简单的解决方案。提前致谢。
【问题讨论】:
-
使用ROWNUM伪列?如果我没记错的话,我相信 FETCH 是 Oracle 12c+...
-
.. 在值相等的情况下怎么办?理想情况下,分页/批处理/限制需要确定性排序..
-
其实我想从员工表中取出第二高的薪水。
-
为什么不升级到现代 Oracle 版本?不再支持 Oracle 11
-
@RaymondNijland:这可能是可移植的,但速度会非常慢。