在数据处理中,经常会遇到类似这样的情况:数据库中存在多条记录,其中某些字段值相同,其他字段值不同.实际的业务需要针对这样的情况,只保留一条数据,其他数据删除.如何做到呢?在sql中有top关键字相对容易做到,但是在oracle中不支持top关键字,如果实现同样的效果就会小费周折.具体实现方法如下举例: 假如现在有表Test,其中记录 现在业务要求针对id,time相同的记录只保留一条,即处理后得结果为 ORACLE语句为 select t1.*,rowid from test t1 whe…
查找所有重复标题的记录: select title,count(*) as count from user_table group by title having count>1; SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC 一.查找重复记录 1.查找全部重复记录 SELECT * FROM t_info a WHERE ((…
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;…
为了性能考虑,在阅读之前提醒大家,如果有子查询,子查询查询到的数据最好不要超过总数据量的30%. 查询有重复数据的记录 select * from F group by a,b,c,d having count(*)>1 select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp SQL删除重复数据方法 例如: id name…
oracle中case when then及decode用法 一.case … when … then 语法: – 写法一: case(条件) when 值1 then 返回值1 when 值2 then 返回值2 else 缺省值 – 写法二: case when 条件1 then 返回值1 when 条件2 then 返回值2 else 缺省值 end; 案例1: -- 如果部门编号为10的,显示为dept10 -- 如果部门编号为20的,显示为dept20 -- 如果部…
--创建测试表 )); ,'); ,'); ,'); ,'); ,'); ,'); commit; select * from test; --查询相同记录 ); select id,name from test a where rowid > (select min(rowid) from test b where a.id = b.id and a.name = b.name); select id,name from test a where rowid <> (select ma…