如何通过SQL或VBA删除MS Access中的列中的重复值

时间:2013-03-12 11:42:27

标签: sql vba ms-access

我可以在此表上运行任何类型的VBA或SQL,删除MS Access中的重复ID吗?

所以这个:

ID          data1   data2   data3   
a           1       2       3   
a           8       9       10  
a           15      16      17  
a           22      23      24  
b           1       2       3   
b           8       9       10  
b           15      16      17  
b           22      23      24  
b           29      30      31  
c           1       2       3   
c           8       9       10  
c           15      16      17  
c           22      23      24  
c           29      30      31  
c           36      37      38  

看起来像这样:

ID      data1   data2   data3   
a        1      2       3   
         8      9       10  
         15     16      17  
         22     23      24  
b        1      2       3   
         8      9       10  
         15     16      17  
         22     23      24  
         29     30      31  
c        1      2       3   
         8      9       10  
         15     16      17  
         22     23      24  
         29     30      31  
         36     37      38  

3 个答案:

答案 0 :(得分:3)

您可以将视图用作

select distinct First Name , Last Name from T1

并将此查询保存为V1 那么你现在有了名字和姓氏,没有重复的

现在使用代码

select * from V1 , T1 where V1.First Name =T1.First Name and V1.Last Name=T1.Last Name

我希望这可以帮助你解决一个问题

答案 1 :(得分:3)

以下内容应清除除第一条记录之外的所有ID列。您可能需要修改ORDER BY以包含另一列,以确保此代码的运行顺序与导出之后的顺序相同。

Dim strKey as String
Dim iCount as Integer
Dim dbs as DAO.Database
Dim rst as DAO.Recordset

strKey = ""
iCount = 0
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT * FROM MYTABLE ORDER BY ID")
If rst.RecordCount > 0
    rst.MoveFirst
    Do Until rst.EOF
         If strKey <> rst!ID Then
             strKey = rst!ID
             iCount = 1
         End If

         If iCount > 1 Then
             rst.Edit
                 rst!ID = ""
             rst.Update
         End If

         iCount = iCount + 1
         rst.MoveNext
    Loop
End If
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing

答案 2 :(得分:0)

这将为您提供您的名字,姓氏以及与单行上该名字和姓氏相关的所有数据的总和。

SELECT FirstName, LastName, sum(data1), sum(data2), sum(data3)
FROM MyTableName
GROUP BY FirstName, LastName

这会给你类似下面的内容:

First Name  Last Name   data1   data2   data3   
a           z           46      50       54   
b           x           75      80       85