我从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
块中的重复字符串,但我猜错了。
答案 0 :(得分:1)
在duplicates delete
块中使用单个查询,而不是一次使用两个查询
cn.Execute ("Delete from AccessBase where Base IN (SELECT Base FROM AccessBase GROUP BY base HAVING count(*) > 1)")