文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程数据库查询及删除重复记录的方法
精品推荐
特别推荐
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
·带你轻松接触13个数据库术语
·如何恢复系统数据库如何恢复系统数据库?
·通过实例讲解由浅入深学会存储过程
·学会三个范式快速成为数据库设计的高手
·SQL数据库应聘人员面试时经常被问的问题
·问答:查询分析器不能单步调试的的原因
·数据库基础知识:SQL中的IIF语句详解
·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
·你知道吗?优化数据库前的十大问题
·自动备份注意事项让你远离误删数据噩梦
·关于MSSQL数据库日志满的快速解决办法
·SQL安全设置攻略
·SQL注入的不常见方法
·关于SQL语句的优化方式
·SQL优化34条
·查询及删除重复记录的方法
热点TOP10
·学习SQL语句之SQL语句大全
·玩转Windows桌面图标
·Transact-SQL语句总汇
·了解SQL语句的功能,快速学会SQL语句
·ASP.NET中数据库的操作初步----DataSet操作数据库
·ADO连接数据库字符串大全
·精妙SQL语句收集
·101个微软提供的Visual Studio 2005示例
·Apache+php+mysql安装与配置详解
·一个简单的酒店系统的数据库设计
·用独立的DLL来存储图片(资源文件)
·通过Remoting service上传文件
·如何在GridView中一次性批量更新多行数据
·VB.NET的数据库基础编程(1)
·SQL优化34条
·QQ聊天记录器演示程序(一)
·使用设计模式构建通用数据库访问类
·数据库基础知识:SQL中的IIF语句详解
·VB.NET的数据库基础编程(2)
·SQL数据库应聘人员面试时经常被问的问题

查询及删除重复记录的方法

日期:2007年3月28日 作者: 查看:[大字体 中字体 小字体]


(一)
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

)

[1] [2] 下一页 




上一篇:界面全新升级:FlashGet新版初尝鲜

下一篇:使用 IP 地址连接到 SQL Server 数据库的速度特别慢

查询及删除重复记录的方法 相关文章:
·离线查看QQ聊天记录有新招
·查找对方IP地址的一些方法
·如何查出QQ好友精确地理位置
·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
·女性自慰方法大搜查
·用ASP编写网上调查投票系统
·Windows错误代码大全集合查询
·瑞星紧急发放免费杀毒软件查杀“磁碟机”
·利用Windows内置功能轻松查看端口使用情况
·不用QQ密码查看聊天记录
查询及删除重复记录的方法 相关软件:
·QQ聊天记录查看器绿色特别版 V5.3
·C语言库函数速查
·电脑故障一查通V2.9
·查看QQ聊天记录V3.0 Build 20071108
·国防资料调查科
·Visual Studio 2005 英文版 ISO 查看
·千万别学英语初中高级 mp3+chm电子书 查看
·美国口语大观录音 mp3 查看
·沸腾家园 新东方背单词4-目前最好的背单词软件(免注册) 查看
·海关进口关税税率查询系统V1.0

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn