我必须在Toad中获取表格的第一行和最后一行。 我使用了以下查询
select * from grade_master where rownum=(select max(rownum) from grade_master)
select * from grade_master where rownum=1
第二个查询用于获取第一行。但第一个不起作用。有人请帮帮我。
提前致谢
答案 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,因此该查询正在做的是对行进行降序排序(内部查询),然后将此有序集赋予外部查询。外部获取集合的第一行然后返回它。