在Access DB中删除重复项的最快方法

时间:2017-11-23 11:57:34

标签: sql vba ms-access

我从Excel VBA模式管理Access MDB文件,并希望找到最快的方法来删除包含数百万行的文件中的重复记录(备注类型,最大字符串长度约为400个符号)。

Sub AccessDB()

Dim db_file As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

    db_file = "c:\Files\"
    db_file = db_file & "accdb.mdb"

    Set cn = New ADODB.Connection

    cn.ConnectionString = _
        "Provider=Microsoft.Ace.OLEDB.12.0;" & _
        "Data Source=" & db_file & ";" & _
        "Persist Security Info=False"
    cn.Open

   'duplicates delete----------------------------------
    Set rs = cn.Execute("SELECT Base, count(*)" & _
    "FROM AccessBase GROUP BY Base HAVING count(*) > 1")

    cn.Execute ("set rowcount 1;" &_
    "delete from AccessBase where Base = rs.Fields(0)")
   '-----------------------------------------------------

    cn.Close

End Sub

一个表中只有一列(" Base")(" AccessBase")。 我试图删除duplicates delete块中的重复字符串,但我猜错了。

1 个答案:

答案 0 :(得分:1)

duplicates delete块中使用单个查询,而不是一次使用两个查询

cn.Execute ("Delete from AccessBase where Base IN (SELECT Base FROM AccessBase GROUP BY base HAVING count(*) > 1)")