当前位置: 首页 > news >正文

sql 查出一张表中重复的所有记录数据

转自:http://blog.csdn.net/a11085013/article/details/8549256

sql 查出一张表中重复的所有记录数据

1、在面试的时候碰到一个 问题,就是让写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下:

select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1)

2、查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先列下:

select count(username) as '重复次数',username from xi group by username having count(*)>1 order by username desc

3、以下为 查看别人的 结果,现列下:查询及删除重复记录的方法大全

  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 )>1)

  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 integerdeclare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect @max = @max -1set rowcount @maxdelete from 表名 where 主字段 = @idfetch cur_rows into @id,@maxendclose cur_rowsset rowcount 0

方法二"重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

  1、对于第一种重复,比较容易解决,使用 select distinct * from tableName,就可以得到无重复记录的结果集。  

  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

select distinct * into #Tmp from tableNamedrop table tableNameselect * into tableName from #Tmpdrop table #Tmp

  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下  

  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableNameselect min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoIDselect * from #Tmp where autoID in(select autoID from #tmp2)  

      最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

(四) 

查询重复

select * from tablename where id in (select id from tablenamegroup by idhaving count(id) > 1)

 

相关文章:

  • Spinner使用二
  • 用jquery写循环播放div的相关笔记 珍贵的总结 -1
  • 【Python】raw转义字符
  • 【OpenStack】OpenStack系列4之Glance详解
  • 事件委托的小应用
  • WP_Query的使用方法
  • docker容器互联 分离部署PHP 和 nginx(端口映射方式)
  • mongoose post方法总结and疑点
  • 算法导论笔记——第十二~十四章 数据结构(二)树
  • 招Java工程师一名
  • React Native商城项目实战10 - 个人中心中间内容设置
  • shell中的并且、和、或者
  • 时间控件-pikaday.js
  • POJ 1328 Radar Installation贪心算法
  • 分享我的第一次Selenium自动化测试框架开发过程
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Javascript编码规范
  • LeetCode算法系列_0891_子序列宽度之和
  • ng6--错误信息小结(持续更新)
  • Redux 中间件分析
  • Windows Containers 大冒险: 容器网络
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 聊聊flink的TableFactory
  • 使用 Docker 部署 Spring Boot项目
  • Nginx实现动静分离
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ###C语言程序设计-----C语言学习(3)#
  • #QT(智能家居界面-界面切换)
  • (02)Hive SQL编译成MapReduce任务的过程
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2.2w字)前端单元测试之Jest详解篇
  • (30)数组元素和与数字和的绝对差
  • (C++17) optional的使用
  • (day6) 319. 灯泡开关
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • **CI中自动类加载的用法总结
  • .NET Core 2.1路线图
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net refrector
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET中GET与SET的用法
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [2018-01-08] Python强化周的第一天
  • [BUG]vscode插件live server无法自动打开浏览器