+
 新版

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

malie0 发布于 2023/09/19 11:08
阅读 19K+
收藏 0

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

加载中
0
osc_46155093
osc_46155093

如果无法在子查询中使用 ORDER BY 子句,但您仍然需要获取查询结果的最后一条数据,您可以考虑以下方法:

  1. 使用子查询和临时表:您可以将子查询的结果存储到一个临时表中,然后在临时表上使用 ORDER BY 子句进行排序并选择最后一条记录。示例SQL:

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

    这将在临时表中按照需要的列(YourColumn)进行降序排序,并选择第一行,即最后一条记录。

  2. 使用窗口函数:如果您使用的是支持窗口函数的数据库,您可以使用 ROW_NUMBER() 窗口函数来为结果集的每一行分配一个行号,然后选择行号为 1 的记录。示例SQL:

     
    WITH RankedData AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY YourColumn DESC) AS RowNum FROM YourTable ) SELECT * FROM RankedData WHERE RowNum = 1;
     

    这将为查询结果集中的每一行分配一个行号,按照指定列(YourColumn)的降序顺序进行排序,并选择行号为 1 的记录,即最后一条记录。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部