Oracle 获取前几行数据问题的陷阱

查询用户数据表,需要根据时间正序排序,然后获取时间最早的前三条数据,是不是第一印象想这么写:

select * from users where rownum<4 order by datatime asc

 

哈哈,这就错了,因为oracle会先去前三条数据,然后再按照时间排序,你是得不到正确结果的,应该先排序,再获取数据

 

select * from (select y.* from users y order by y.datatime asc) where rownum<4

posted @ 2018-05-09 10:35  HalleyZ  阅读(248)  评论(0编辑  收藏  举报