oracle 取第一条或者最后一条记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 取第一条或者最后一条记录相关的知识,希望对你有一定的参考价值。

主键id 使用的sys_guid()函数自动生成的
现在有一堆记录 我需要做的是 取得最新添加的一条记录(可按照时间排序) 请问该怎样做呢?

如果你的表非常大,那查询最新添加的一条记录就尽量让ORACLE走主键索引。
select * from table_name where id in (select max(id) from table_name);
这样ORACLE会走索引快速扫描得出最后一条ID的值,然后通过唯一索引得出最后一条记录,这样效率较高。
参考技术A SELECT * FROM (
           SELECT * FROM TBL_TEST T
             ORDER BY T.TIME DESC
            ) WHERE ROWNUM < 2

取rownum为1的也就是小于2的就可以

追问

select x.id from(select s.id ,rownum num from(select t.id from table_name t order by t.date)s)x where x.num=(select count(id)from table_name)
刚才这样写试了下暂时还没发现有什么问题,还是谢谢你们了

本回答被提问者采纳
参考技术B 1、要求很精确地话只能用程序实现了。
2、也可以使用oracle的伪劣ORA_ROWSCN。
select * from (select t.*,ORA_ROWSCN oscn from t1 t ) where oscn =(select max(ora_rowscn) from t1) ;
3、只查最近的,可以查询flashback_transaction_query视图
参考技术C SELECT * FROM (SELECT T.*,ROWNUM RN FROM TABLE_NAME T ORDER BY ROWNUM DESC ) WHERE ROWNUM=1

MYSQL中查讯咋查第一条记录!

select top 1 * from book
这不对吗
还有 SELECT *
FROM `book`
LIMIT 0 , 30 后面 LIMIT 0 , 30 是什么意思

查看第一条:

SELECT

group_concat(id ORDER BY `create_time` DESC)

FROM

`user`

GROUP BY

user_code

select top 1 * from book 不对,因为mysql里没有top这种写法,它用limit。

扩展资料:

1、查看最后一条

mysql:

select * from table order by id DESC limit 1

oracle:

select * from emp where id in (select max(id) from emp);

2、查询前n行记录

select * from table1 limit 0,n;或select * from table1 limit n;

3、查询后n行记录

select * from table1 order by id desc dlimit n;//倒序排序,取前n行,id为自增形式

参考技术A SELECT * FROM `book` LIMIT 0 , 30
标示从第一条开始,获取30条

SELECT * FROM `book` LIMIT 30
标示获取前面30条,和上面的功能一样

SELECT * FROM `book` LIMIT 19 , 10
标示从第20条开始取10条,也就是20~30,注意从第一条编号是0本回答被提问者采纳
参考技术B

    select top 1 * from book   不对,因为mysql里没有top这种写法,它用limit

    查第一条  select * from book limit 1;

    select * from book limit 0,30 后面的limit 0,30 是查询前30条记录

以上是关于oracle 取第一条或者最后一条记录的主要内容,如果未能解决你的问题,请参考以下文章

oracle 查询数据只要排序后的第一条记录(不用rownum=1),sql语句怎么写

oracle 查询数据只要排序后的第一条记录(不用rownum=1),sql语句怎么写

oracle记录中选择出第一条记录

MYSQL中查讯咋查第一条记录!

ORACLE 查询去重保留第一条排序

sql数据库查询,只能查出第一条记录?