面试题中经常遇到的SQL题:删除重复数据,保留其中一条
如题,解决思路如下:
1、首先我们需要找出拥有重复数据的记录
---以name字段分组
select Name,COUNT(Name) as [count] from Permission group by Name-- having COUNT(Name)>1 ---以name字段分组,筛选出有重复出现的字段 having 用于条件筛选 作用相当于where 区别where用于group by 之前,having用于之后
select Name,COUNT(Name) as [count] from Permission group by Name having COUNT(Name)>1
查找拥有重复记录的数据
执行结果:


2、然后我们需要知道要要保留的记录的ID号,或者其他唯一标识字段
---获取重复记录中最小的一项的ID号
select min(ID),Name,COUNT(Name) as [count] from Permission group by Name having COUNT(Name)>1
获取需要保留记录的ID编号
执行结果:

3、组合前面两个数据查询条件,进行删除操作
---删除重复数据
delete from Permission
---找出拥有相同数据的记录
where Name in (select Name from Permission group by Name having COUNT(Name)>1)
---除了最小ID号的数据保留,其他的删除 (也可以用max(id))
and ID not in (select min(ID) from Permission group by Name having COUNT(Name)>1)
删除重复数据,保留其中一条
面试题中经常遇到的SQL题:删除重复数据,保留其中一条的更多相关文章
- sql server删除重复数据,保留第一条
SELECT * FROM EnterpriseDataTools.Enterprise.CompanyMainwhere CompanyNo in (select CompanyNo from En ...
- sql 删除重复数据保留一条
--创建测试表 CREATE TABLE TEST ( DEPTNO ), DNAME ), LOC ) ); --插入测试数据 , 'test1', 'test2'); , 'test1', 'te ...
- SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法
create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...
- sql查询删除重复数据
数据库UserInfo 删除重复数据 即删除重复的用户名手机号 同一个用户名手机号只保留一个用户 01.根据多个字段查询重复数据 with data1 as( select MobilePhone,N ...
- SQL语句删除重复数据
1.如表中没有主键,先添加自动增长主键 alter table 表名 add 列名 int identity (1,1) primary key 2.删除重复数据 delete from 表名 whe ...
- SQL Server 删除重复数据只保留一条
DELETE FROM Bus_TerminalMessage_Keywords WHERE Content IN (select Content from Bus_TerminalMessage_K ...
- SQL查找 删除重复数据只保留一条
--用SQL语句,删除掉重复项只保留一条 --在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 --1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 ...
- MySQL 数据库查询数据,过滤重复数据保留一条数据---(MySQL中的row_number变相实现方法)
转自: http://www.maomao365.com/?p=10564 摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_numbe ...
- sql语句(删除重复数据只保留一条)
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
随机推荐
- Largest Rectangle in a Histogram(hdu1506,单调栈裸题)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- 字符串拼接在Oracle和mysql中的用法
oracle拼接字符串 1.使用 '||' 或者 concat(参数1,参数2) select 'aa' || 'bb' || 'cc' from dual; 结果:aabbcc select co ...
- [异常笔记]required a bean of type 'org.quartz.JobExecutionContext' that could not be found
*************************** APPLICATION FAILED TO START *************************** Description: Par ...
- 【Win10分区教程】
Win10怎么分区?如何为Win10硬盘分区? 注:本教程适用于Win7.Win8.Win8.1和Win10系 到了Windows10时代,TB级硬盘已经很普及了,那么在Win10系统下如何为这些大容 ...
- css3新样式
超出两行变省略号 overflow:hidden; text-overflow:ellipsis;display:-webkit-box; -webkit-box-orient:vertical;-w ...
- 关于Ext.js和Ext.Net的杂谈
最近几年比较火的前端js框架extjs 算是其中的佼佼者.统一的UI设计,强悍的组件及丰富的插件,对浏览器良好的兼容性等优点使得许多公司使用Extjs,同时也使得无数程序猿开始研究这个玩意也包括我在内 ...
- Lavavel5.5源代码 - Pipeline
<?php class Pipeline { protected $passable; protected $pipes = []; protected $method = 'handle'; ...
- admin添加用户时报错:(1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_l
在stackoverflow找到答案: DATABASES = { 'default': { ... 'OPTIONS': { "init_command": "SET ...
- kuangbin 最小生成树
A & M - Jungle Roads HDU - 1301 题意:字母之间的路,求最小生成树 题解:处理好建边以后就是一个Prime #include<cstdio> #inc ...
- 相亲数--Python
想亲数:在遥远的古代,人们发现某些自然数之间有特殊的关系:如果两个数a和b,a的所有除本身以外的因数之和等于b,b的所有除本身以外的因数之和等于a,则称a,b是一对相亲数 code: def sumF ...