oracle 查询日期如何查询相同的数据

在oracle中怎么查一个表中的的一个字段的重复数据_百度知道
在oracle中怎么查一个表中的的一个字段的重复数据
在线等着呢
提问者采纳
select&testid,count(1)&from&testtable&group&by&testid&having&count(1)&1count(1)就是重复在数量
其实我想要的是这个样子的,就是重复的数量也有,然后假如有个标签号,每个标签号是不同的,查出来的是这样的
这样的重复的数据也显示出来,谢谢
select&testid,count(1)&from&testtable&group&by&testidtestid就是你的标签号,count(1)就是id数量,若大於1说明有重复。
提问者评价
其实我也弄出来了啊!在网上找的,但是还是同样的感谢你
其他类似问题
oracle的相关知识
等待您来回答
您可能关注的推广回答者:
下载知道APP
随时随地咨询
出门在外也不愁笔记本手机数码家电如何提高oracle 数据库查询效率_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
37页免费8页免费69页免费3页¥2.003页免费 4页免费3页免费12页免费3页免费8页免费
喜欢此文档的还喜欢207页1下载券48页免费4页免费4页1下载券48页2下载券
如何提高oracle 数据库查询效率|如​何​提​高​o​r​a​c​l​e​ ​数​据​库​查​询​效​率
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select&& peopleId from&& people group by&& peopleId having count
(peopleId) & 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select&& peopleId from people group by&& peopleId&& having count
(peopleId) & 1)
and rowid not in (select min(rowid) from&& people group by peopleId having count(peopleId
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in&& (select peopleId,seq from vitae group by peopleId,seq having
count(*) & 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in&& (select peopleId,seq from vitae group by peopleId,seq having
count(*) & 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)&1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in&& (select peopleId,seq from vitae group by peopleId,seq having
count(*) & 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)&1)
(二)比方说在A表中存在一个字段“name”,而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;Select Name,Count(*) From A Group By Name Having Count(*) & 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) & 1
(三)方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having
count(*) &; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
close cur_rows
set rowcount 0
  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
  1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
  就可以得到无重复记录的结果集。
  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写
在select子句中省去此列)
(四)查询重复
select * from tablename where id in (
select id from tablename
group by id
having count(id) & 1
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:25115次
排名:第19548名
原创:66篇
转载:20篇
(1)(2)(6)(1)(2)(1)(1)(2)(1)(4)(6)(1)(2)(6)(2)(4)(6)(2)(10)(3)(2)(1)(1)(3)(12)(2)(2)(2)Oracle 如何管理数据并发访问及数_数据库技术_Linux公社-Linux系统门户网站
你好,游客
Oracle 如何管理数据并发访问及数
来源:Linux社区&
作者:Linux
一、&多版本并发访问控制
能够自动地实现一个查询的读一致性(read consistency),即一个查询所获得的数据来自同一时间点(single point in time)(这也被称为语句级读一致性(statement-level read consistency))。Oracle 还能令一个事务内的所有查询都具备读一致性(即事务级读一致性(transaction-level read consistency))。&&&&&&&Oracle 利用回滚段(rollback segment)中的信息生成一个能保证一致性的数据视图。回滚段内保存了未提交或最近提交的事务中所修改数据的原值。图展示了 Oracle 如何利用回滚段实现语句级的读一致性。
&&&&&&& 在查询开始执行时,将记录当前的系统变化编号(system change number,SCN)。在图中,记录的系统变化编号为 10023。当查询进行扫描时,只会使用有效的(observed)数据块。如果某个数据块内的数据被修改过(即数据块的 SCN 晚于查询开始执行时记录的SCN),Oracle 将使用回滚段中的信息重建此数据块,并以重建的数据块替代被修改的数据块供查询使用。因此,查询的结果集只包含查询开始执行时就已经提交的数据。在查询执行时,其他事务修改的数据对此查询来说是无效的,这保证了每个查询都能 得到满足一致性的数据。&&
二、语句级读一致性
&&&&&&& Oracle 强制实现语句级读一致性(statement-level read consistency)。这保证了单一查询的结果集来自一个时间点——即查询开始执行的时间。因此,一个查询的结果集永远不会包含脏数据及此查询执行时其他事务提交的数据。在一个查询执行期间,只有在查询执行前提交的数据对此查询才是可见的。查询无法看到其开始执行后提交的数据。&
&&&&&& 任何一个查询都能得到满足一致性的结果集,这保证了用户无需额外操作就能确保数据一致性。SELECT,使用子查询的 INSERT,及包含显式或隐式查询的 UPDATE 或 DELETE 语句,都能够保证数据一致性。上述语句通过一个查询(query)来得到她们所需的满足一致性的结果集(分别使用 SELECT,INSERT,UPDATE 或 DELETE 语句)。&
三、事务级读一致性
&&&&&&& Oracle 还能够实现事务级读一致性(transaction-level read consistency)。当一个事务运行在串行化模式(serializable mode)下时,则事务内所有数据访问均反映的是事务开始时的数据状态。即事务内的所有查询对某个时间点来说具备一致性,但是运行在串行化模式下的事务能够看到事务自身对数据所作的修改。事务级的读一致性能够保证可重复读取(repeatable read)并可阻止出现不存在读取(phantomread)。&&
四、RAC 环境下的读一致性&
&&&&&& RAC 系统采用缓存对缓存(cache-to-cache)的数据块传输机制(此技术被称为 Cache Fusion)在实例间传输满足读一致性(read-consistent)的数据块镜像。RAC 系统通过高速度低延迟的内部连接(interconnect)实现上述数据传输,从而满足实例之间对数据块的请求。&&&
五、Oracle 事务隔离级别&&1、已提交读取&
&&&&&& Oracle 默认使用的事务隔离级别。事务内执行的查询只能看到查询执行前(而非事务开始前)就已经提交的数据。Oracle 的查询永远不会读取脏数据(未提交的数据)。
&&&&&& Oracle 不会阻止一个事务修改另一事务中的查询正在访问的数据,因此在一个事务内的两个查询的执行间歇期间,数据有可能被其他事务修改。举例来说,如果一个事务内同一查询执行两次,可能会遇到不可重复读取(nonrepeatable read)或不存在读取(phantom)的现象。&
2、串行化&
&&&&&& &串行化隔离的事务只能看到事务执行前就已经提交的数据,以及事务内 INSERT,UPDATE,及 DELETE 语句对数据的修改。串行化隔离的事务不会出现不可重复读取或不存在读取的现象。 && 3、只读模式&
&&&&& &只读事务只能看到事务执行前就已经提交的数据,且事务中不能执行 INSERT,UPDATE,及 DELETE 语句。&&
六、设置隔离级别
&&&&&&& 应用程序的设计开发者及数据库管理员可以依据应用程序的需求及系统负载(workload)而为不同的事务选择不同的隔离级别(isolation level)。用户可以在事务开始时使用以下语句设定事务的隔离级别:&&&1、 SET TRANSACTION ISOLATION LEVEL READ COMMITTED;&&&&2、SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;&&& 3、SET TRANSACTION READ ONLY;
用户可以使用 ALTER SESSION 语句改变一个会话所有内事务的默认隔离级别:
1、ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE;&&2、ALTER SESSION SET ISOLATION_LEVEL READ COMMITTED;&
已提交读取隔离
&&&&&& Oracle 默认使用的隔离级别(isolation level)是已提交读取(read committed)隔离。这种程度的隔离适合在事务发生冲突的可能性较小的系统中使用。在这种隔离级别下,Oracle 能够保证事务内每个查询在执行期间都拥有一个唯一的数据视图,因此事务可能出现不可重复读取(nonrepeatable read)或不存在读取(phantom)的现象,但此时系统的数据处理能力较高。因此已提交读取隔离(read committed isolation)适合在事务发生冲突的可能性较小的系统中使用。
串行化隔离
符合以下特性的系统适合采用串行化隔离(serializable isolation)?& 1、数据量大,但事务短小,只会更新较少数据行的数据库& ?& 2、两个并发事务修改相同数据的概率较小&?& 3、运行时间相对较长的事务只执行只读操作&&
&&&&&& 我们可以参考以下场景来研究 Oracle 中的两种隔离级别:假设现有一组数据库表(或称为一组数据集),一系列读取表数据的查询,以及一组在任意时间提交的事务。如果一个数据库操作(一个查询或一个事务)中所有读取返回的数据是由同一组已提交事务写入的,我们就称此操作满足事务集数据一致性(transaction set consistent)。相反,当一个数据库操作内的不同读取反映了不同事务集对数据的修改,此操作就不满足事务集数据一致性。换句话说,一个不满足事务集数据一致性的操作所看到的数据库的状态是由不同的已提交事务集决定的。
&&&&&& 在已提交读取(read committed)隔离模式下,Oracle 能保证每个语句的事务集数据一致性。而在串行化(serializable)隔离模式下,Oracle能保证每个事务的事务集数据一致性。&
&&&&&&& 在已提交读取隔离模式(read committed)及串行化隔离模式(serializable)下执行的事务都采用行级锁(row-level locking)技术,他们在更新被未提交的并发事务修改的数据行时都会发生等待--等待未提交的并发事务提交或撤销,并释放锁。如果未提交的并发事务进行了回滚,那么无论发生等待的事务运行在何种隔离模式下,都能修改之前被锁住的数据行,如同未提交的并发事务不存在一样。&&&&&&& 当导致阻塞的事务(blocking transaction)[前文中提到的未提交的并发事务]提交并释放了锁后,运行在已提交读写模式下的等待事务就能够继续执行其中的更新操作。而运行在串行化模式下的等待事务将出现无法进行串行化访问(Cannot serialize access)错误,因为阻塞事务在串行化等待事务开始后更新了后者所存取的数据。&
相关资讯 & & &
& (08月28日)
& (05月05日)
& (10月29日)
& (06月16日)
& (04月26日)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 oracle 查询日期 的文章

 

随机推荐