表中字段 ord_no有很多相同的记录,而ref_no是唯一的没有重复记录,如何取出不同ord_no,ref_no最大记录

作者&投稿:贰李 (若有异议请与网页底部的电邮联系)
sql如何查出数据表重复的数据,删除其中一条的sql怎么写~

修正现在的表添加一个唯一的标识
先按条件分组,统计两个关键的内容
数量:大于1的时需要删除的
max或min的标识: 用于删除得行标识
delete from 表where id in(
slect id ,count(*) ,max(id) from 表 groupby id
having count(*)>1
)
如果有大于2的重复记录,需要在写循环删除

  Oracle系统提示不能对表code_ref创建一个唯一索引,因为系统发现表中存在重复的记录。我们必须首先找到表中的重复记录并删除该记录,才可以创建唯一索引。下面介绍三种不同的方法来确定库表中重复的记录。
  一、自关联查询方法
  Oracle系统中,对于所有的表都存在一个唯一的列,这就是rowid。对该列使用最大(max)或者最小(min)函数可以非常容易地确定重复的行。
  二、GROUPBY/HAVING查询方法
  利用分组函数GROUPBY/HAVING也很容易确定重复的行。以需要创建唯一索引的列分组并统计每组的个数,很明显如果组中记录数超过1个就存在重复的行。
  三、Exceptioninto子句
  采用altertable命令中的Exceptioninto子句也可以确定出库表中重复的记录。这种方法稍微麻烦一些,为了使用“excepeioninto”子句,必须首先创建EXCEPTIONS表。创建该表的SQL脚本文件为utlexcpt.sql。对于NT系统和UNIX系统,Oracle存放该文件的位置稍有不同,在NT系统下,该脚本文件存放在ORACLE_HOMEOra81rdbmsadmin目录下;而对于UNIX系统,该脚本文件存放在$ORACLE_HOME/rdbms/admin目录下。
  ERROR位于第2行:
  ORA-02299:无法验证(SYSTEM.I_CODE_REF)-未找到重复关键字
  下面将exceptions表和code_ref表通过rowid关联起来即可得到表code_ref中重复的记录。
  利用上文中的三种方法就能够轻松判别出Oracle数据库表中重复记录,为工作提供了很大的便利,不用做些无谓的工作。

select * from XXX
where
ord_no in
( select ord_no
from xxx
group by ord_no,ref_no
having ord_no+ref_no=max(ord_no+ref_no)
)

select * from XXX
where
ord_no in
( select ord_no
from xxx
group by ord_no,ref_no
having ord_no+ref_no=max(ord_no+ref_no)
)

关注中


雁山区17762665039: 表中字段 ord - no有很多相同的记录,而ref - no是唯一的没有重复记录,如何取出不同ord - no,ref - no最大记录 -
钟烁二维: select * from XXX where ord_no in ( select ord_nofrom xxxgroup by ord_no,ref_no having ord_no+ref_no=max(ord_no+ref_no))

雁山区17762665039: 用sql语句查询某表中拥有多个相同字段中的一个值 -
钟烁二维: 用sql语句查询某表中拥有多个相同字段中的一个值1、对自己的表操作 select a.* from hdzx_question a where a.c_id=(select top 1 c_id from hdzx_question where c_title=a.c_title and substring(c_content,0,7000)=substring(a.c_content,0,7000)) (...

雁山区17762665039: mysql表中字段有多个相同记录值,如何将相同的记录相加.并排序所有username -
钟烁二维: 这个恐怕要用存贮过程或编程实现, 提个思路:1) 创建一个同字段结构的新表table22) 按Col1排序3) 循环每条记录, 记录每个字段值到临时变量中, 名为vCol1, vCol2...if (Col1 == 前一条记录vCol1)累加vCol2, vCol3...(如果是字符串则相连)else将vCol1, vCol2...各字段插入table2中4)最终table2应该是你想要的结果

雁山区17762665039: sqlserver中,一个表里面有多个字段,怎样根据两个不能重复的字段取出全部的字段.
钟烁二维: 有重复数据主要有一下几种情况:希望可以帮到你~ 1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 example: select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录(有主键id即唯一键) ...

雁山区17762665039: 帮忙写下SQL:一个表中怎样取到某几个字段的重复记录 -
钟烁二维: 楼主只是要这几个数据,还有很多类似的数据? 如果只是几个数据可以用这样的查询得到 CREATE TABLE T (no_1 CHAR(2), no_2 CHAR(2), no_3 CHAR(2),no_4 CHAR(2)) INSERT INTO T SELECT '01 ','02','03 ','04' INSERT INTO T SELECT ...

雁山区17762665039: 帮忙写一个SQL语句:查询一个表中某个字段相同值最多的记录 -
钟烁二维: select * from Case where CLass = (select top 1 CLass from Case group by CLass order by count(CLass ) desc)

雁山区17762665039: oracle中表A中有若干完全重复的字段,怎样查询出不是重复的信息 -
钟烁二维: 1. 使用DISTINCT关键字进行查询 SELECT DISTINCT COL1, COL2 FROM A;2. 使用GROUP BY去掉重复记录 SELECT COL1, COL2 FROM A GROUP BY COL1, COL2;

雁山区17762665039: 在oracle数据库中,有两个表里的某些字段是一样的,怎么样找出这些相同的字段 -
钟烁二维: 假如表是t1,t2 select a.column_name from (select column_name from user_tab_columns where table_name='T1')a, (select column_name from user_tab_columns where table_name='T2') b where a.column_name=b.column_name

雁山区17762665039: sql 如何取出表中字段相同的指定信息个数
钟烁二维: 否超过二条的事件不能写在sql语句中,建议写在程序代码中. 例如: for(int i=0;i<2;i++) {DataReader相关的代码,只让其读取二条记录. } 而sql语句可以这样写,直接查询姓名相同的行返回. select *from 表名 where name=@name 只是提供一个思路,如果楼主感觉可行,详细的代码就需要楼主自己完成.在编写代码的过程中若遇到难点可以就具体问题进行提问.

雁山区17762665039: 数据库表中有10条数据,除了主键id不同,其余数据完全相同,怎样用一条sql语句删除其中的9条数据,即去重 -
钟烁二维: 1 select* from表2113 whereid in(selectmin(id) from表 groupby字段526141021,字段2,字段3) 字段1,字段2,字段3这个地方,你需要把其他字段一起都group by了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网