查询表table1里字段id小于10的所有数据,并且让数据根据id降序排列,然后得到第一条数据 select * from (select * from table1 where id<10 order by id desc ) where rownum=1 注意:desc可以省略,默认的就是desc
Oracle 查询出来的数据取第一条 --------------------------------------------------------------------------- 转载自:http://www.itpub.net/thread-246442-1-1.html select * from (select * from <table> order by <key>) where rownum=1; select * from (select * from &l
该查寻语句没有经过任何的优化,因为oracle没有SQL的TOP关键字,但是有一个ROWNUM的列,因此,可以通过ROWNUM来进行查询.oracle的关于rownum的参考手册里面提到了 分析函数 定义. SELECT t.* FROM (SELECT k.*,rownum row_ FROM Table WHERE .. ORDER by time)t WHERE rownum < 1 里面的select 查询为外面的查询提供了一个列值row_(当然,红色部分的字体我们可以省略掉,
项目需要筛选出不重复数据,以前没有做过,第一反应就是利用distinct处理,但是弄了好久也没搞出来,大家有知道的望告知下. 这次筛选没有使用distinct ,是利用group by ,利用id为唯一标示符(自增长),对按user进行排列,然后取重复项最小id(非重复项直接取唯一id),并以此id为条件查询,从而去除重复的数据. 数据格式为: 使用语句如下: select * from tbl_DPImg where ID in (select min(ID) from tbl_DPImg g
SQL> set linesize 200 SQL> select * from (select a.* ,row_number() over( order by empno) rn from emp a) where rn=1 2 3 ; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DNAME RN ---------- ---------- --------- ---
检查重复记录 -- 检查重复code1 select count(identity) num, identity from event_log where code='code1' order by num desc 删除重复记录 DELETE FROM event_log WHERE `code`='code1' AND identity IN ( SELECT identity from ( ) a ) AND id NOT IN ( SELECT keepId FROM ( ) b ) 其
oracle查询:取出每组中的第一条记录按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group by type; 注意:select 后面的列要在group by 子句中,或是用聚合函数包含,否则会有语法错误. 方法二: SELECT * FROM(SELECT z.type , z.code ,ROW_NUMBER()OVER(PARTITION BY z.type ORDER BY z.cod
oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COUNT(*) INTO V_COUNT FROM TBL_MYTABLE; SELECT TRUNC(DBMS_RADOM.VALUE(1,V_COUNT+1)) INTO V_NUM FROM DUAL; SELECT * FROM TBL_MYTABLE T WHERE T.FID=V_NUM;
背景: A表.B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序) 首先想到了直接写个带排序的子查询去匹配外围的值,从这个结果集中只要第一条,但是经过验证发现,里边的条件是获取不到外层的值的,因此此方案不可行. 经过百度,发现 row_number() over函数可用,以下是数据环境及结果. 创建数据环境 )); insert into A values('alan'); insert into A values('Alee'); insert into
背景: A表.B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序) 经过百度,发现 row_number() over(partition by a order by b desc)函数可用(需要说明下,order by 必须有缺少会报错),以下是数据环境及结果. 创建数据环境 create table A(ANAME varchar(20)); insert into A values('alan'); insert into A values('Ale
转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分页.排序.查询的组合SQL语句,举例来说,通常我们会这样写:(假定表test中id是主键,并且id从1开始没有间断顺序排列) 1. SELECT * FROM ( SELECT id,a1,a2,a3,a4,a5,a6,a7,a8,a9, ROWNUM AS rn FROM test
思路: 先将取出的值随机排序,然后在随机排序的每次取第一条的结果 举例如下: select * from(select t.code fromTBIZOPS_PROVINCE t ORDER BY DBMS_RANDOM.RANDOM())where rownum < 2;select * from (select t.code from TBIZOPS_CITY t wheret.province_id = '13' ORDER BY DBMS_RANDOM.RANDOM()) where