oracle 查询不用 order by 如何取最后一条数据?
如题,本身 from 后的数据表是用子查询出来的,无法用某种方式进行 order by,
但是要取查询结果的最后一条应该怎么写?
可以考虑以下方法:
优化格式如下:
将子查询结果置于临时表中,便于排序并提取末尾记录。
WITH TempTable AS (
-- [子查询语句]
)
SELECT *
FROM TempTable
ORDER BY YourColumn DESC
FETCH FIRST 1 ROW ONLY;
此方法首先创建一个临时表TempTable
,根据YourColumn
列降序排列,最后取出顶端(即最大值)记录。
利用数据库的窗口函数ROW_NUMBER()
直接对数据行编号,选取排名首位的记录。
WITH RankedData AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY YourColumn DESC) AS RowNum
FROM YourTable
)
SELECT *
FROM RankedData
WHERE RowNum = 1;
通过窗口函数ROW_NUMBER()
按YourColumn
列降序生成行号,然后从结果集中筛选出行号为1的记录,实现获取末尾数据的目的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。