如果是你猜想的那种情况,你在入库的时候延迟10秒或几秒看看就知道了.....你的语句应该没有错的.
mssql删除重复的:
delete from table1 
where id in (select min(id) from table1
group by a, b,c having count(*) > 1)
不知道mysql 有没有这种写法.

解决方案 »

  1.   

    你为什么不把a, b, c 三个字段合成一个字段,中间用|之类的字符区分开来,
    然后把这个字段加上UNIQUE( 'FieldName' )属性?读出的时候可以用list( $a, $b, $c ) = explode( '|', $FieldValue )来做呢?
      

  2.   

     select table1.id from table1,(select min(id) as minid,a,b,c from table1 
    group by a, b,c) as table2 
    where table1.a = table2.a 
         AND table1.b = table2.b 
         AND table1.c = table2.c 
         AND table1.id  <> table2.minid 这里返回的 能在iN里面实现嘛?
      

  3.   

        删除重复记录的sql语句已经执行成功,就是在每次采来新数据后执行一次:查询所有的记录,如果有重复记录就删除。
        但这样还是有问题:
        1.经常查询所有的记录并删除费时间,影响其他人的查询速度,毕竟数据库里面的记录已经太多,而速度在任何时刻都很重要;
        2.主键id,auto_increment,id数值即为记录的条数,但执行删除语句后重复记录被删,有些id的数值就为空了。最后一个id并不是总的记录条数了。比如,本来是1,2,3,4,5,现在只剩下1,3,4,5    记录重复的问题根源还没有搞清楚,执行sql语句删除重复记录也只是亡羊补牢,希望各位高手继续畅所欲言,帮忙实现在采集的时候同样的记录就只有一条入库。谢谢。
      

  4.   

    多线程?
    或者采集的时候把SQL语句集中在最后再执行插入 这样还省数据库资源呢