结构化查询语言重复记录查询的几种方法,需要的朋友可以参考一下
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
复制代码代码如下:select * from people id in(按peopleId计数从人员组中选择人员id2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
复制代码代码如下:从peopleId所在的人员中删除(通过peopleId计数从人员组中选择peopleId(人民Id) 1)和rowid不在(按peopleId有计数(peopleId)从人员组中选择最小(rowid
)1)
3、查找表中多余的重复记录(多个字段)
复制代码代码如下:select * from vitae aw where(a . people id,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having计数(*) 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
复制代码代码如下:从简历中删除其中(a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having计数(*) 1)和rowid不在(select min(rowid)from vitae group by people id,seq having count(*)1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
中复制代码代码如下:select * from vitae aw where(a . people id,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having计数(*) 1)和rowid不在(select min(rowid)from vitae group by people id,seq having count(*)1)(二)比方说在A表中存在一个字段"姓名",而且不同记录之间的"名称"值有可能会相同,现在就是需要查询出在该表中的各记录之间,"姓名"值存在重复的项;复制代码代码如下:从计数(*)为一的按名称分组中选择姓名,计数(*)如果还查性别也相同大则如下:复制代码代码如下:从按姓名、性别计数(*) 1(三)
方法一
复制代码代码如下:声明@max integer,@id integerdeclare cur_rows游标选择本地主字段,计数(*)自表名分组依据主字段拥有计数(*);一打开当前行数将当前行数提取到@id,@ max while @ @ fetch _ status=0 begin select @ max=@ max-1 set rowcount @ max delete from表名在哪里主字段=@idfetch cur_rows into @id,@ maxendclose cur _ rows set rowcount 0
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重
复的记录,比如名字字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用复制代码代码如下:从表名中选择独特*就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留一条),可以按以下方法删除复制代码代码如下:select distinct * into # Tmp from tableName drop table tableName select * into tableName from # Tmp drop table # Tmp发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为名字,地址,要求得到这两个字段唯一的结果集复制代码代码如下:select identity(int,1,1) as autoID,* into # Tmp from tablename select min(autoID)as autoID into # Tmp 2 from # Tmp group by Name,autoID select * from # Tmp where autoID in(select autoID from # Tmp 2)最后一个挑选即得到了姓名,地址不重复的结果集(但多了一个自动身份证明字段,实际写时可以写
在挑选子句中省去此列)
(四)查询重复复制代码代码如下:select * from tablename where id in(select id from tablename group by id with count(id)1)