数据库查找重复数据
‘壹’ 如何查找数据库中的重复数据
实现方式如下:
Setcnn=CreateObject("ADODB.Connection")
cnn.Open"Provider=Microsoft.Jet.Oledb.4.0;dataSource="&ThisWorkbook.Path&"排课数据.mdb"
SQL="Select星期&节&班级,count(星期&节&班级)from排课where星期isnotnullgroupby星期&节&班级havingcount(星期&节&班级)>1"
Setrs=CreateObject("ADODB.Recordset")
rs.OpenSQL,cnn,1,3
Ifrs.RecordCountThen
Fori=1Tors.RecordCount
s=s&vbCrLf&"星期"&rs.Fields(0)&"班,重复次数:"&rs.Fields(1)
rs.MoveNext
Next
MsgBox"有"&rs.RecordCount&"条记录重复:"&s
Else
MsgBox"没有发现重复记录"
EndIf
rs.Close
cnn.Close
Setrs=Nothing
Setcnn=Nothing
EndSub
1。删除全部重复记录(慎用)
Delete表Where重复字段In(Select重复字段From表GroupBy重复字段HavingCount(*)>1)
2。保留一条(这个应该是大多数人所需要的^_^)
DeleteHZTWhereIDNotIn(SelectMax(ID)FromHZTGroupByTitle)
注:此处保留ID最大一条记录
3、查找表中多余的重复记录(多个字段)
select*fromvitaea
where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
deletefromvitaea
where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)
androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)
‘贰’ 如何查询数据库中有相同字段的数据
查看可用如下方法:
1、创建测试表,插入数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
create table proct
(id int,
name varchar(10),
totol int)
insert into proct values (1,'香蕉',100)
insert into proct values (2,'橘子',67)
insert into proct values (3,'葡萄',89)
insert into proct values (4,'苹果',235)
insert into proct values (5,'香蕉',77)
insert into proct values (6,'芒果',34)
insert into proct values (7,'葡萄',78)
insert into proct values (8,'梨',24)
表中数据如:
2、如果查询name列有重复的数据,可执行sql语句:
1
select * from proct where name in (select name from proct group by name having COUNT(*)>1)
说明:查询的结果就是香蕉和葡萄在表中是有重复的,要把香蕉和葡萄的所有记录都查询出来,结果如图:
‘叁’ SQL查询语句,怎样查询重复数据
1、第一步,打开数据库,并创建一个包含重复数据的新用户表,见下图,转到下面的步骤。
‘肆’ 如何查找和删除数据库中的重复数据
法一:
用Group
by语句
此查找很快的select
count(num),
max(name)
from
student
–查找表中num列重复的,列出重复的记录数,并列出他的name属性group
by
numhaving
count(num)
>;1
–按num分组后找出表中num列重复,即出现次数大于一次delete
from
student(上面Select的)这样的话就把所有重复的都删除了。—–慎重法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:—-
执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录SELECT
*
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
D
–D相当于First,SecondWHERE
EM5_PIPE_PREFAB.DRAWING=D.DRAWING
ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);—-
执行下面SQL语句后就可以删除所有DRAWING和DSNO相同且重复的记录DELETE
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
DWHERE
EM5_PIPE_PREFAB.DRAWING=D.DRAWING
ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);法一:
用Group
by语句
此查找很快的select
count(num),
max(name)
from
student
–查找表中num列重复的,列出重复的记录数,并列出他的name属性group
by
numhaving
count(num)
>;1
–按num分组后找出表中num列重复,即出现次数大于一次delete
from
student(上面Select的)这样的话就把所有重复的都删除了。—–慎重法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:—-
执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录SELECT
*
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
D
–D相当于First,SecondWHERE
EM5_PIPE_PREFAB.DRAWING=D.DRAWING
ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);—-
执行下面SQL语句后就可以删除所有DRAWING和DSNO相同且重复的记录DELETE
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
DWHERE
EM5_PIPE_PREFAB.DRAWING=D.DRAWING
ANDEM5_PIPE_PREFAB.DSNO=D.DSNO);
‘伍’ sql查找某一字段相同的所有数据
1、在我们的电脑上打开数据库,这里新建一张含有重复数据的user表做示例。
‘陆’ 怎么查看数据库表中某个字段的值有哪些重复记录
下面以 sqlserver数据库为例进行说明。
select * from TableA where b in (select b from TableAgroup by b having count(b) > 1)
这样就列举出了b字段所有的重复数据,可以根据对应的行号,取得位于第几行。
如果要查询a字段或者c字段重复数据,可以相应的把上面的b字段替换成a字段或c字段即可。
举例:
1、创建表student
这样就查出名字重复列,以及行号id。
(6)数据库查找重复数据扩展阅读:
1. sqlserver其他相关的一些查询:
(1)删除表中多余的重复记录,重复记录是根据单个字段(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)
(2)查找表中多余的重复记录(多个字段)
select * from vitae a where (a.peopleId,a.seq) in
(select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
(3)查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a where (a.peopleId,a.seq) in
(select peopleId,seq from vitae group by peopleId,seq havingcount(*) > 1) and
rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
2. SQL语言元素
1、子句,是语句和查询的组成部分。
2、表达式,可以生成标量值,也可以生成由列和行数据组成的表。
3、谓词,指定可以评估为SQL三值逻辑(3VL)(真/假/未知)或布尔真值的条件,用于限制语句和查询的效果,或用于更改程序流。
4、查询,根据特定条件检索数据。这是SQL的一个重要元素。
语句可能对架构和数据产生持久影响,或者可能控制事务,程序流,连接,会话或诊断。
SQL语句还包括分号(“;”)语句终止符。虽然并非每个平台都需要,但它被定义为SQL语法的标准部分。在SQL语句和查询中通常会忽略无关紧要的空格,从而可以更轻松地格式化SQL代码以提高可读性。
‘柒’ 怎样查询数据库中重复的数据
一般来讲查询数据中有重复的记录,首先要确定"重复"的定义,例如单字段重复、多字段组合重复等,然后再根据"重复"的定义进行分组计数,组计数大于1的即为有重复的记录。
下面举个例子供参考:
有雇员表(工号,姓名,身份证号码)
其中字段"身份证号码"因未设置唯一索引,存在重复的情况,现要求检索出身份证有重复的员工资料,SQL实现语句如下
selecta.*from雇员a,
(select身份证号码from雇员groupby身份证号码havingcount(*)>1)b
wherea.身份证号码=b.身份证号码;