从toad中的表中获取最后一行

时间:2014-02-12 11:31:51

标签: oracle

我必须在Toad中获取表格的第一行和最后一行。 我使用了以下查询

select * from grade_master where rownum=(select max(rownum) from grade_master)
select * from grade_master where rownum=1

第二个查询用于获取第一行。但第一个不起作用。有人请帮帮我。

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您指定结果的排序顺序,这样的请求是有意义的 - 数据库中没有这样的东西和#34;第一个"和"最后"如果未指定排序顺序,则为行。

SQL> with t as (
  2  select 'X' a, 1 b from dual union all
  3  select 'C' , 2  from dual union all
  4  select 'A' a, 3 b from dual
  5  )
  6  select a, b, decode(rn, 1, 'First','Last')
  7  from (
  8  select a, b, row_number() over(order by a) rn,
  9  count(*) over() cn
 10  from t
 11  )
 12  where rn in (1, cn)
 13  order by rn
 14  /

A          B DECOD                                                              
- ---------- -----                                                              
A          3 First                                                              
X          1 Last   

答案 1 :(得分:0)

在oracle中,在您在sql语句中指定顺序之前,不会对数据进行排序。

所以当你这样做时:

 select * from grade_master 
oracle会以任何方式提供它想要的行。

OTOH如果你这样做

 select * from grade_master order by id desc

然后oracle会按ID降序排序。

所以要获得最后一行,你可以这样做:

 select *
    from (select * from grade_master order by id desc)
   where rownum = 1

在评估“order by”子句之前确定rownum,因此该查询正在做的是对行进行降序排序(内部查询),然后将此有序集赋予外部查询。外部获取集合的第一行然后返回它。