开发者社区> 问答> 正文

oracle 查询不用 order by 如何取最后一条数据?

oracle 查询不用 order by 如何取最后一条数据?
如题,本身 from 后的数据表是用子查询出来的,无法用某种方式进行 order by,
但是要取查询结果的最后一条应该怎么写?

展开
收起
OSC开源社区 2024-05-31 15:33:04 74 0
1 条回答
写回答
取消 提交回答
  • 可以考虑以下方法:

    优化格式如下:

    优化查询方法:

    1. 子查询结合临时表

    将子查询结果置于临时表中,便于排序并提取末尾记录。

    WITH TempTable AS (
        -- [子查询语句]
    )
    SELECT * 
    FROM TempTable
    ORDER BY YourColumn DESC
    FETCH FIRST 1 ROW ONLY;
    

    此方法首先创建一个临时表TempTable,根据YourColumn列降序排列,最后取出顶端(即最大值)记录。

    2. 窗口函数应用

    利用数据库的窗口函数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的记录,实现获取末尾数据的目的。

    2024-05-31 16:25:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像