SQL查询,如何去除重复的记录?

SQL查询,如何去除重复的记录?,第1张

首先,先说明一个问题。这样的结果出现,说明系统设计是有问题的。

其次

删除重复数据,你要提供你是什么数据库。

不同数据库会有不同的解决方案。

关键字Distinct

去除重复,如下列SQL,去除Test相同的记录;

1.

select

distinct

Test

from

Table

2.

如果是要删除表中存在的重复记录,那就逻辑处理,如下:

3.

select

Test

from

Table

group

by

Test

having

count(test)>1

4.

先查询存在重复的数据,后面根据条件删除

还有一个更简单的方法可以尝试一下:

select

aid,

count(distinct

uid)

from

表名

group

by

aid

这是sqlserver

的写法。

如图一在数据表中有两个膀胱冲洗重复的记录。

2

可以通过sql语句“select

*from

表名

where

编码

in(select

编码

from

表名

group

by

编码

having

count(1)

>=

2)”来查询出变种所有重复的记录如图二

3

通过sql语句"

delete

from

表名

where

编码

in(select

编码

from

表名

group

by

编码

having

count(1)

>=

2)

and

编码

not

in

(select

max(编码)from

表名

group

by

编码

having

count(1)

>=2)

"来删除重复的记录只保留编码最大的记录

实现方式如下:

  Dim cnn As Object, rs As Object, SQL$, i&, s$

    Set cnn = CreateObject("ADODB.Connection")

    cnn.Open "Provider=Microsoft.Jet.Oledb.4.0data 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表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)

distinct。

SQLserver中很明显的去重复的语句是distinct。selectdistinct是去除重复的记录行,count(distinctColumn),消除重复值。还有一些不明显的具有去重功能的词,例如union,会去除重复的记录行或值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10052739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存