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…
如何在Oracle数据库中实现获取前几条数据的方法呢?就是类似SQL语句中的SELECT TOP N的方法.本文将告诉您答案,举例说明了哟!   1.在Oracle中实现SELECT TOP N :    由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询.  简单地说,实现方法如下所示:  SELECT 列名1...列名n FROM (SELECT 列名1...列名n FROM 表名ORDER B…
sql中group by后,获取每组中的前N行数据,目前我知道的有2种方法 比如有个成绩表: 里面有字段学生ID,科目,成绩.我现在想取每个科目的头三名. 1.   子查询 select * from score s where StudentName in (select top 3 StudentName from score where s.Subjects = Subjects group by Subjects,StudentName,Score order by Score desc…
在实际工作中,我们可能根据某种排序后,只需要显示前多少条数据,此时就需要根据不同的数据库,使用不同的关键字 一.SQL Server/Access select top 数量/百分比 from table 如: select top 10 from ticket---返回ticket表中的前10行数据 select top 10 from ticket where name='测试'---返回ticket表中,name为测试的前10行数据 select top 10 from ticket or…
oracle  分组取第一行数据 SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn, t.* FROM test1 t ) WHERE rn = 1; 查找oracle  执行的语句 select t.*from v$sqlarea t where t.FIRST_LOAD_TIME like '2018-11-05%' order by t.FIRST_LOAD_TIME desc…
常规读取 一般我们读取文件时都会读取全部的文件然后再进行操作,因为R是基于内存进行计算的. data <- read.table("C:\\Users\\Hider\\Desktop\\test.txt", header = TRUE, encoding = "gbk") 但是当读取的数据量很大的时候,读取的时间会让人捉急,而且会把内存给占满,读完数据之后就不用进行下一步操作了,因为电脑都卡死了. 所以只读取数据的前n行是一个不错的选择,边读取边进行处理. 读…
取排序后的前几行,应该用: select * from(select * from test order by stamp desc) where rownum<= 6  (表示排序后取前几行) 而不应该使用: select * from test where rownum<= 6  order by stamp desc (表示取前几行后再排序)…
转自:http://www.cnblogs.com/linyechengwei/archive/2010/06/14/1758337.html http://blog.csdn.net/smartsmile2012/article/details/7900464 在C#中要对Datatable排序,可使用DefaultView的Sort方法.先获取Datatable的DefaultView,然后设置得到的Dataview的sort属性,最后用视图的ToTable方法将排好序的dataview导出…
在Oracle中实现select top N:由于Oracle不支持select top 语句,所以在Oracle中经常是用order by 跟rownum的组合来实现select top n的查询.简单地说,实现方法如下所示:select 列名1 ...列名n from(select 列名1 ...列名n    from 表名 order by 列名1)where rownum <=N(抽出记录数)order by rownum asc 如:select id,name from (selec…
一:按照某字段排序(时间,总数等),获取第一条 select a.* FROM ( select * from ( select t.*,row_number() over(partition by t.id order by t.createtime desc) rn from table t ) c ) a ';--加上where条件是查询一条,不加是查询多条 二:如果是获取时间最新一条数据 SELECT * FROM table WHERE (id,createtime) IN (SELE…