如何查找数据库中的重复数据?

 我来答
小婷陪你看世界
高粉答主

2018-04-01 · 关注小婷,让小婷陪你一起看美丽世界
小婷陪你看世界
采纳数:28409 获赞数:381117

向TA提问 私信TA
展开全部

实现方式如下:

  Dim cnn As Object, rs As Object, SQL$, i&, s$
    Set cnn = CreateObject("ADODB.Connection")
    cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;data Source=" & ThisWorkbook.Path & "\排课数据.mdb"
    SQL = "Select 星期&节&班级,count(星期&节&班级) from 排课 where 星期 is not null group by 星期&节&班级 having count(星期&节&班级)>1"
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open SQL, cnn, 1, 3
    If rs.RecordCount Then
        For i = 1 To rs.RecordCount
            s = s & vbCrLf & "星期" & rs.Fields(0) & "班,重复次数:" & rs.Fields(1)
            rs.MoveNext
        Next
        MsgBox "有" & rs.RecordCount & "条记录重复:" & s
    Else
        MsgBox "没有发现重复记录"
    End If
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing
End Sub

1。删除全部重复记录(慎用) 

Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)

2。保留一条(这个应该是大多数人所需要的 ^_^)

Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)

注:此处保留ID最大一条记录

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)

蔺其英理子
2019-02-03 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:31%
帮助的人:789万
展开全部
你是要查找数据库中某个字段下的相同数据吧,我给你写2个例子
(数据库执行效率高)
select
*
from
dbo.MediafileInfo
as
a
where
(VideoDownUrl
IN
(SELECT
VideoDownUrl
FROM
MediafileInfo
AS
B
WHERE
A.ProgramID
<>
B.ProgramID))
(数据库执行效率低)
SELECT
*
FROM
MediafileInfo
AS
A
WHERE
(SELECT
COUNT(*)
FROM
MediafileInfo
WHERE
VideoDownUrl=A.VideoDownUrl)>1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式