sql 查询重复行数据
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people
select * from people where peopleId in (select  peopleId  from  people  group  by  peopleId  having count(peopleId) > 1)
where peopleId in (select  peopleId  from  people  group  by  peopleId  having count(peopleId) > 1)

 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people
delete from people  where peopleId  in (select  peopleId  from people  group  by  peopleId   having count(peopleId) > 1)
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  havingcount(peopleId )>1)
and rowid not in (select min(rowid) from  people  group by peopleId  havingcount(peopleId )>1)
 3、查找表中多余的重复记录(多个字段)
3、查找表中多余的重复记录(多个字段)  select * from vitae a
select * from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from vitae a
delete from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seqhaving count(*) > 1)
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seqhaving count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq havingcount(*)>1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq havingcount(*)>1)

 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a
select * from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seqhaving count(*) > 1)
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seqhaving count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq havingcount(*)>1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq havingcount(*)>1)
 (二)
(二) 比方说
比方说 在A表中存在一个字段“name”,
在A表中存在一个字段“name”, 而且不同记录之间的“name”值有可能会相同,
而且不同记录之间的“name”值有可能会相同, 现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项; Select Name,Count(*) From A Group By Name Having Count(*) > 1
Select Name,Count(*) From A Group By Name Having Count(*) > 1
 如果还查性别也相同大则如下:
如果还查性别也相同大则如下: Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1

 (三)
(三) 方法一
方法一
 declare @max integer,@id integer
declare @max integer,@id integer
 declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段having count(*) >; 1
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段having count(*) >; 1
 open cur_rows
open cur_rows
 fetch cur_rows into @id,@max
fetch cur_rows into @id,@max
 while @@fetch_status=0
while @@fetch_status=0
 begin
begin
 select @max = @max -1
select @max = @max -1
 set rowcount @max
set rowcount @max
 delete from 表名 where 主字段 = @id
delete from 表名 where 主字段 = @id
 fetch cur_rows into @id,@max
fetch cur_rows into @id,@max
 end
end
 close cur_rows
close cur_rows
 set rowcount 0
set rowcount 0
 方法二
方法二
 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
 1、对于第一种重复,比较容易解决,使用
1、对于第一种重复,比较容易解决,使用
 select distinct * from tableName
select distinct * from tableName
 就可以得到无重复记录的结果集。
就可以得到无重复记录的结果集。
 如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
 select distinct * into #Tmp from tableName
select distinct * into #Tmp from tableName
 drop table tableName
drop table tableName
 select * into tableName from #Tmp
select * into tableName from #Tmp
 drop table #Tmp
drop table #Tmp
 发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
 2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
 假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
 select identity(int,1,1) as autoID, * into #Tmp from tableName
select identity(int,1,1) as autoID, * into #Tmp from tableName
 select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
 select * from #Tmp where autoID in(select autoID from #tmp2)
select * from #Tmp where autoID in(select autoID from #tmp2)
 最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
 (四)
(四) 查询重复
查询重复
 select * from tablename where id in (
select * from tablename where id in (
 select id from tablename
select id from tablename 
 group by id
group by id 
 having count(id) > 1
having count(id) > 1
 )
)sql 查询重复行数据的更多相关文章
- sql 查询重复的数据
		select * from yryz_role_partner where user_id in (select user_id from yryz_role_partner group by use ... 
- Expression构建DataTable to Entity 映射委托  sqlserver 数据库里面金额类型为什么不建议用float,实例告诉你为什么不能。  sql server 多行数据合并成一列  C# 字符串大写转小写,小写转大写,数字保留,其他除外 从0开始用U盘制作启动盘装Windows10系统(联想R720笔记本)并永久激活方法 纯CSS打造淘宝导航菜单栏 C# Winform
		Expression构建DataTable to Entity 映射委托 1 namespace Echofool.Utility.Common { 2 using System; 3 using ... 
- SQL查询显示行号、随机查询、取指定行数据
		转自:walkingp 1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用 ... 
- sql 查询重复数据,删除重复数据,过滤重复数据
		select * from (SELECT titleid,count(titleid) c FROM [DragonGuoShi].[dbo].[ArticleInfo] group by titl ... 
- [sql查询]  重复数据只取一条
		SELECT * FROM tab_init WHERE id IN ( --根据Data分类获取数据最小ID列表 select max(id) from tab_init group by a,b ... 
- SQL查询重复记录
		假设现有一张人员表(表名:Person),若想将姓名.身份证号.住址这三个字段完全相同的记录查找出来,使用 1: SELECT p1.* 2: FROM persons p1,persons p2 3 ... 
- SQL将多行数据合并成一行【转】
		转:https://blog.csdn.net/AntherFantacy/article/details/83824182 今天同事问了一个需求,就是将多行数据合并成一行进行显示,查询了一些资料,照 ... 
- Databricks 第11篇:Spark SQL 查询(行转列、列转行、Lateral View、排序)
		本文分享在Azure Databricks中如何实现行转列和列转行. 一,行转列 在分组中,把每个分组中的某一列的数据连接在一起: collect_list:把一个分组中的列合成为数组,数据不去重,格 ... 
- python 去除Excel中的重复行数据
		导入pandas import pandas as pd 1.读取excel中的数据: frame = pd.DataFrame(pd.read_csv('excel的绝对路径.csv'', 'She ... 
随机推荐
- spring-session-data-redis解决session共享的问题
			分布式系统要做到用户友好,需要对用户的session进行存储,存储的方式有以下几种: 本地缓存 数据库 文件 缓存服务器 可以看一些不同方案的优缺点 1.本地机器或者本地缓存.优点:速度快 缺点:服 ... 
- Sharepoint 2010 工作流状态值
			在Sharepoint2010中,如果要使用工作流状态值进行筛选,必须使用内部值,不能使用文字,要不然是筛选不出来的. 进行中:2 已取消:4 已批准:16 拒绝:17 下边是已取消的工作流状态: 
- 使用WPF教你一步一步实现连连看(一)
			第一步: 问题,怎样动态的建立一个10*10的grid(布局) for (int i = 0; i < 10; i++) { RowDefinition rowDef = new RowDefi ... 
- C#实现接口IHttpModule完成统一的权限验证
			测试代码如下: using System; using System.Collections.Generic; using System.Text; using System.Collections; ... 
- ssm简单整合(注释方法)
			1.创建web工程,选择web.xml文件,并导入相关jar包(使用的spring4.0以上版本,) 2.配置web.xml文件,包括spring.xml,springMVC.xml的加载映射,核心操 ... 
- python中集合-set
			集合-set 集合是高中数学中的一个概念 一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素 # 集合的定义 s = set() print(type(s)) print(s) print(&q ... 
- 七牛云java(服务端)通用工具类
			前言 需要安装lombok插件. 功能列表 上传本地文件 上传Base64图片 获取文件访问地址 上传MultipartFile 代码 pom.xml <dependency> <g ... 
- Immuable详解以及在React中的实战
			转载自:https://zhuanlan.zhihu.com/p/20295971, 今天看到这篇文章后情不自禁的转载过来了,我的天老爷,我看到后直接菊花一紧,这写的太好了,直接写进我心坎里了,我必须 ... 
- TurboLinux系统管理习题一
			TurboLinux系统管理习题一 1. 使用vi编辑文本只读时,强制存盘并退出的命令是?(单选题)A :w! B :q! C :wq! D :e!答案 ... 
- 用animate改变了某个样式之后再用css控制会无效
			我前几天写了个移动端运动,(这个运动的代码我贴在这了:http://www.cnblogs.com/weiman/p/6600380.html)然后发现了这个问题,具体如下: 未运动前是这样的,菜单栏 ... 
