sql去除重复语句(转)
sql 单表/多表查询去除重复记录
单表distinct
多表group by
group by 必须放在 order by 和 limit之前,不然会报错
************************************************************************************
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 integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max end
close cur_rows
set rowcount 0
方法二
"重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
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 * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
(四) 查询重复
select * from tablename where id in (select id from tablename
group by id
having count(id) > 1
)
3、查找表中多余的重复记录(多个字段) 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)这样的写发是通不过的!!!
转载于:https://www.cnblogs.com/cwqcwq/p/4670638.html
sql去除重复语句(转)相关推荐
- mysql sql 去除重复行_SQL查询语句去除重复行
1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录 ...
- SQL 去除重复数据 UNION all 和UNION 的用法
使用UNION关键字去除重复数据要注意,用UNION连接的前后两个SQL语句查询出来的结果在字段顺序,字段名称,字段类型都要一致. 1.UNION all 是将两个查询语句结果合并输出,不去除重复数据 ...
- sql 去除重复之distinct详解
前言: 在sql数据查询中,有时候,数据可能会出现很多重复相同的数据,但是,我们有时候只是想要查询出不同的数据,把多余重复的数据过滤掉,可以通过使用distinct来实现过滤重复数据,返回唯一的数据. ...
- SQL 去除重复、获取最新记录
应用中常会有需要去除重复的记录,或者获取某些最新记录(如:每个用户可以答题多次,每次答题时间不同,现在要获取所有用户的最新答题记录,即每个用户取最新的一条) 使用group 和max 即可实现上述功能 ...
- SQL 去除重复值进行统计问题
问题 有个查询问题始终不得其解,记得 在查询中有一个distinct选项可以去除重复值 表中 name ip a 127.0.0.1 a 127.0.0.1 a 192.16 ...
- Oracle sql 去除重复 和 字段去除空格
1.去除重复两种方式 1.1 distinct 函数 select distinct userid from projectinfo where projecttype in (select id f ...
- php sql语句去掉重复,sql 去除重复记录的语句
IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb] GO CREATE TABLE [tb] ([name] [nvarchar](10),[value] ...
- php sql 去除重复数据,MSSQL_快速删除重复记录,SQL Server如何实现?,如果一张表的数据达到上百万 - phpStudy...
如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间-- 开发人员的噩梦--删除重复记录 想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地 ...
- SQL去除重复数据,无主键
一个没留神,数据库表table1被同事改的代码插入了重复数据,是很规律的每一条数据重复出现两次,查重SQL如下: SELECT column1, count(*) num FROM table1 GR ...
最新文章
- 如何有效编写软件的75条建议
- kettle 将job等导入导出成xml
- java.lang.NullPointerException错误分析
- wxWidgets:wxWizard类用法
- ssh免密登陆失败原因总结(Linux)
- 链接服务器访问接口返回了消息没有活动事务,因为链接服务器 SQLEHR 的 OLE DB 访问接口 SQLNCLI10 无法启动分布式事务。...
- R语言聚类算法之k中心聚类(K-medoids)
- python装饰器的通俗理解_Python|闭包、装饰器,简单的实例,通俗的理解
- array2xml xml2array
- torch summary_留学论文如何5分钟搞定写作Summary,速看!
- 异常:贴dependency报错
- 账龄分析表excel模板_这种高端表格模板你会做吗?Excel制作带照片的员工信息查询表...
- [Deprecated!] Android开发案例 - 微博正文
- linux 设置unix格式化,linux格式化
- 这片太虐,抱歉,我退场了。
- 仁、义、礼、智、信、衷、孝、节、勇、和
- NPN三极管电平反向电路
- linux xunsou_Linux下的迅搜(xunsearch)安装使用教程,并设置成开机启动服务
- nginx 初级总汇知识点
- 链接脚本(一)基本概念和格式
热门文章
- 解决Java Web项目无法读取配置文件问题
- 基数排序算法图解分析
- linux查看docker使用率,Linux系统非Docker环境如何限制CPU使用率
- html 文件路径 d files,tmpfiles.d
- 【干货】网工面试最常见的几大问题,附答案
- OAM 深入解读:使用 OAM 定义与管理 Kubernetes 内置 Workload
- Knative 实战:一个微服务应用的部署
- python进行矩阵计算公式_纯python进行矩阵的相乘运算的方法示例
- 对象后加一个值 php_PHP 对象使用
- 长安大学二级c语言考试题,长安大学03-04C语言A卷试题