记得以前有个同事问过我这个,说是以前面试的时候碰到的问题,下面我介绍三种方法。

首先我们在这里创建一个测试表添加相应的测试数据。

create table test  (id number,name varchar(10));

insert into  test values(1,'liufang');

insert into  test values(2,'xiaozhang');

insert into  test values(3,'dawei');

insert into  test values(4,'laotan');

insert into  test values(5,'laotan');

insert into  test values(6,'laotan');

insert into  test values(7,'dawei');

1、根绝name相同 ID不同来的方式来判断(id必须唯一)

delete from test a where exists (select null from test b where b.name=a.name and b.id>a.id);

2、用rowid 来代替其中的id,比上面的方法更适用,没有字段唯一限制

delete from test a where exists (select null from test b where b.name=a.name and b.rowid>a.rowid);

3、  通过分析函数根据name 分组生成序号,然后删除序号大于1 的数据

(注:rder by 2,3根据查询的第二第三个字段升序排序查询)

select  rowid as rid,name,row_number() over(partition by name order by id) from test order by 2,3;

分析函数会吧对应名称相同的字段出现的次数记录下来,把对应次数大于1 的数据删除即可

分析函数:ROW_NUMBER() OVER (partition by name order by name)  简单的说row_number()从1开始,为每一条分组记录返回一个数字,

这里的ROW_NUMBER() OVER (partition by name order by name) 是先把name列升序,再为降序以后的没条name记录返回一个序号,

delete from test

where rowid in (select rowid

from (select rowid as rid,

row_number() over(partition by name order by id) as seq

from test)

where seq > 1);

面试题中经常遇到的SQL题:删除重复数据,保留其中一条

如题,解决思路如下: 1.首先我们需要找出拥有重复数据的记录 ---以name字段分组 select Name,COUNT(Name) as [count] from Permission group ...

sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)

我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...

【转】SQL删除重复记录,只保留其中一条

SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peop ...

SQL Server中删除表中重复数据

方法一:利用游标,但要注意主字段或标识列 declare @max integer,@id integer open cur_rows fetch cur_rows into @id,@max beg ...

sql 删除重复数据且保留其中一条 用sql 关键字:with ROW_NUMBER

--1.建立表:Coursecreate table Course( ID int identity(1,1),--ID Student varchar(20) ,--学生 Sub varchar(2 ...

ORACLE数据库删除表中记录报record is locked by another user

在操作ORACLE数据库的时候,由于执行完,没有COMMIT,直接把PL/SQL关闭掉,后来导致那张表被锁住,当编辑时就会出现这个信息,record is locked by another user ...

如何在MySQL中删除表中指定列的唯一键?

语法结构如下: alter table table_name drop  index column_name;

从mysql数据库删除重复记录只保留其中一条

这两天做了一个调用第三方接口的小程序,因为是实时更新数据,所以请求接口的频率就很高,这样有时会出现往数据库插入重复的数据,对数据库造成压力也不方便管理,因为要通过原生sql语句,解决数据库的去重问题. ...

【MySQL】【1】表中存在重复记录,删除保留其中一条

--删除题库(TABLE_Q )中,标题(TITLE )和类型(TYPE )都相同的数据,仅保留ID最小的一条 DELETE TABLE_Q FROM TABLE_Q, ( ) T2 WHERE TA ...

随机推荐

Razor Engine,实现代码生成器的又一件利器

Razor Engine,之前仅仅是ASP.NET MVC的一种View引擎,目前已经完全成为一种可以独立使用的模版引擎,并且已经成为了CodePlex上一个开源的项目(http://razoreng ...

5.IP选路,动态选路

1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统 ...

对HTML5标签的认识(二)

---恢复内容开始--- 这次随笔主要讲一下列表标签.链接标签.和表格标签.图像标签.音频标签.及视频标签的运用及作用. 一.

  1. 首先先了解一下

AutoMapper 忽略某个字段

以前要在定义中忽略 Mapper.CreateMap() .ForMember(dest => dest.SomeValuefff, opt ...

python数据结构与算法第十一天【希尔排序】

1.希尔排序的原理 2.代码实现 def shell_sort(alist): n = len(alist) # 初始步长 gap = n / 2 while gap > 0: # 按步长进行插 ...

hdu4578线段树区间更新

/* 只有在区间中的数字不相同时才pushdown:往子区间传递数字再到子区间更新,同时该区间的flag置0 更新完左右子区间后进行pushup,如果左右子区间数字相同,那么把子区间合并,子区间数字置 ...

JS通过类名判断是否都必填

//判断class='required' 是否都必填 function required() { var flag = true; $(".required").each(func ...

社区发现(Community Detection)算法(转)

作者: peghoty 出处: http://blog.csdn.net/peghoty/article/details/9286905 社区发现(Community Detection)算法用来发现 ...

管理nginx(采用信号的方式)

启动:sbin/nginx 立即停止:sbin/nginx -s stop 平滑停止:sbin/nginx -s quit 重载配置:sbin/nginx -s reload(不会导致服务器关闭, 而 ...

Installing Forms Developer 10g and Reports 32-bit on 64-bit Windows versions(win7 or win10)

E-Business Suite 12.1 and 12.2 require Forms Developer 10g and Reports Designer 10g.  Forms Develope ...

oracle删除表某一字段,oracle中删除表中某字段出现重复的信息 保留其中一条相关推荐

  1. oracle 快速移动数据和删除重复数据但保留其中一条数据

    在项目中会遇到将一个表的部分数据移动另一个表中的事情. insert into table1 (id,其他属性) select t.a,t.c...from table2 t 注意属性类型大小要一致 ...

  2. mysql类似于excel的删除重复项_sql删除重复项并保留其中一条(含sql优化)

    背景: 数据库包含重复数据,需要清理掉重复数据,并只保留其中一条. 结论 优化:百万数据查询删除重复数据,耗时从5423秒下降到2秒左右 优化过程: 根据搜索到的资料: 4.删除表中多余的重复记录(多 ...

  3. SQL删除表中的重复记录只保留其中一条,最简单的方法:ROW_NUMBER()

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?. 要求:删除表中多余的重复记录,且保留 id 最小的那一条记录. CREATE TABLE #temp_data( id BI ...

  4. mysql 查询删除重复数据,保留其中一条数据

    一.查询重复数据 --------根据多个字段查询重复数据 SELECT* FROMtable_name a WHERE(a.字段1, a.字段2) IN (SELECT字段1,字段2FROMtabl ...

  5. mysql怎么删除重复数据并且保留其中一条

    现在有张加班表,一个人同一天只允许申请一次加班,就是加班日期和userid相同的数据应该只有一条,但是现在由于之前没有做限制,导致很多数据重复 怎么通过sql删掉重复数据 思路:先查询重复数据的最大i ...

  6. mysql 删除表中重复数据并保留一条

    最近有个需求,给角色添加菜单权限,这是一个role_menu 表.里面存放的是角色id和菜单id,是批量给一种类型角色添加,但有可能角色人为添加过,因为数据量还是比较大的,如果先查询这个有没有添加过再 ...

  7. 如何使用SQL删除某个字段重复的记录,保留其中一条

    应用在使用过程中发现数据表中有一些重复记录,现需要根据 taobao_nick, taobao_id 来过滤出重复记录并删除,保留其中一条记录即可. 1. 首先使用查询语句检查一下重复记录数 sele ...

  8. MySQL 中删除重复数据只保留一条

    WechatIMG256.jpeg 场景 在许多条记录里,存在着些相同的记录,使用SQL语句,删除掉重复项只保留一条. 数据模型 half_demon 半妖表 id name weapon skill ...

  9. MySQL中删除重复数据只保留一条

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 SELECT ...

最新文章

  1. jQuery获取带点的id元素
  2. 树链剖分(轻重链剖分) 讲解 (模板题目 P3384 【模板】轻重链剖分 )
  3. Android开发之Serializable 和 Parcelable的区别(源代码分享)
  4. Object类型转换为long或者Long
  5. Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
  6. xgboost python windows编译问题
  7. Effective C++学习第七天
  8. 链表怎么输出最后一个元素无空格_剑指offer系列----从尾到头打印链表
  9. FI常用T-CODE
  10. Java多线程学习八:线程池常用的阻塞队列
  11. 《电子元器件的可靠性》——3.3节可靠性筛选试验
  12. 自己做量化交易软件(38)小白量化实战11--双向高频马丁交易策略
  13. linux 字符 拨号上网,LINUX下用ADSL拨号上网
  14. HDRP shader 获取阴影(Custom Pass)
  15. STM32学习笔记(二)
  16. 104.android 简单的检查小米、华为、OPPO、VIVO手机系统是否打开通话自动录音功能,跳转通话录音页面,安卓怎么检查开启通话自动录音,安卓开启自动录音
  17. 重要知识:身份证复印件的正确使用方法
  18. 用fail2ban阻止ssh暴力破解root密码
  19. linux如何修改当前时间
  20. esp寄存器与ebp寄存器介绍

热门文章

  1. 什么是IPO,增发,和对股市的影响
  2. 绕线机-排线伺服比例随动功能块(梯形图+SCL代码)
  3. 关于雅可比矩阵及行列式的理解与学习
  4. 腾讯搞了一个大新闻,躺枪的竟是百度……辣眼睛
  5. 微波matlab,科学网—matlab风云3号卫星微波数据读取 - 彭邦的博文
  6. 微信小程序wx:for 的使用以及wx:key绑定
  7. 工业设备数据采集调研要点
  8. release模式ftell崩溃
  9. Unable to access the X Display
  10. 优秀开源产品推荐:Tpflow工作流引擎