ACCESS数据库,大约有几万条记录,应该是每一条都不能一样的记录,但时间长发现有一些重复录过几次了,现在想能将有多条记录的记录查找出来,只保留一条记录,其余的删除或在某个字段上打个标识,不知在ACCESS数据库要实现思路是怎样的.

解决方案 »

  1.   

    这么做可以不,先把你的表拷贝一份,然后把表中的数据全部删除
    然后Insert Into 原表 Select Distinct ID From 拷贝表
    然后把拷贝表Drop掉
      

  2.   

    FootballNight(足球之夜) 
    的方法可行
      

  3.   

    (如果表中有主键的话,应该不会出现重复记录的呀!是不是表中没有主键,所以有ID重复(或者是记录完全相同?)
    找出重复记录的ID:
    select ID 
    from 
    (
        select ID ,count(*) as Cnt 
        from 要消除重复的表
        group by ID
    ) T1
    where T1.cnt>1
      

  4.   

    select count(*),ID from  表
    group by ID
    having count(*)>2
      

  5.   

    足球之夜的方法可行,但数据量大时,可能会比较慢,我提供一法:
    (1)找出所有重复的ID (上面 lyadlysysT(虾米成长中) 方法不错!)
    (2)将这些重复记录复制到临时表 (select into 语句)
    (3)从原表中删除这些记录 (delete )
    (4)复制单条记录到表中 (insert into 表 select distinct 语句)
    以上只是SQL语句麻烦一点。
      

  6.   

    删除数据库中重复数据的几个方法
                    数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置…… 
                  方法一
                          declare @max integer,@id integer
                          declare cur_rows cursor local for select 主字段,count(*) from 
                        表名 group by 主字段 having count(*) > 1
                          open cur_rows
                          fetch cur_rows into @id,@max
                          while @@fetch_status=0
                          begin
                          select @max = @max -1
                          set rowcount @max
                          delete from 表名 where 主字段 = @id
                          fetch cur_rows into @id,@max
                          end
                          close cur_rows
                          set rowcount 0                方法二
                    有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。                1、对于第一种重复,比较容易解决,使用
                          select distinct * from tableName                就可以得到无重复记录的结果集。
                    如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
                          select distinct * into #Tmp from tableName
                          drop table tableName
                          select * into tableName from #Tmp
                          drop table #Tmp                发生这种馗吹脑蚴潜砩杓撇恢懿模黾游ㄒ凰饕屑纯山饩觥?/P> 
                    2、这类重复问题通常要求保留重复记录中的第一条记录,*作方法如下
                    假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
                          select identity(int,1,1) as autoID, * into #Tmp from 
                        tableName
                          select min(autoID) as autoID into #Tmp2 from #Tmp group by 
                        Name,autoID
                          select * from #Tmp where autoID in(select autoID from 
                        #tmp2)                最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
                    更改数据库中表的所属用户的两个方法
                    大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了,原因是建表的时候采用了当时的数据库用户……