oracle中表A中有若干完全重复的字段,怎样查询出不是重复的信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中表A中有若干完全重复的字段,怎样查询出不是重复的信息相关的知识,希望对你有一定的参考价值。

    使用DISTINCT关键字进行查询

    SELECT DISTINCT COL1, COL2 FROM A;

    使用GROUP BY去掉重复记录
    SELECT COL1, COL2 FROM A GROUP BY COL1, COL2;

参考技术A 使用distinct关键字,便可以消除重复字段。例如,select distinct 列名 from A; 参考技术B 若是单张表中有重复的字段,那你该思考一下表结构是否合理了,若是表中有重复列可用 distinct

oracle如何查询重复数据然后全部显示,举例:一份Excel中有100条数据,只有10条不同,我一个个

查询的话需要替换10次,但如何全部查询出来按照位置就可以全部覆盖替换了,但是怎么查才行,有朋友提示字段拼接方式,但查不到相关方法,都是去重的,可我正相反。

在oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会相同。使用rowid,SQL语句如下
:

select * from tbl a where rowid not in (select max(b.rowid) from tbl b where  a.col1=b.col1 and a.col2 = b.col2)

参考技术A

按照位置覆盖是什么意思?

 

我简单做了点数据,你看一下

create table test (id int,name varchar(10))
insert into test values (1,'张三')
insert into test values (1,'张三')
insert into test values (1,'张三')
insert into test values (2,'李四')
insert into test values (2,'李四')
insert into test values (2,'李四')
insert into test values (3,'王五')
insert into test values (3,'王五')
insert into test values (3,'王五')

就是每一个都有三条重复的,然后执行

select a.* from test a,
(select id,name,dense_rank() over (order by id) rn from test group by id,name)  b
where a.id=b.id and a.name=b.name and b.rn=1

 

 

你每次只需要替换b.rn=1后边那个1就行了

参考技术B 用高级筛选的“选择不重复记录”就可以把100条中的10选出来了。追问

我觉得我的提问够明确了吧,你是在说反话呢

追答

抱歉,没有看清就回答了。如果用手工做个样子,来个截图就好明白了。

以上是关于oracle中表A中有若干完全重复的字段,怎样查询出不是重复的信息的主要内容,如果未能解决你的问题,请参考以下文章

oracle查询重复数据方法

oracle 查询所有字段,某字段重复只显示一条

oracle删除重复的行怎么删啊

oracle删除重复的行怎么删啊

oracle用rowid去掉重复值

oracle查询