数据如上图
是一个小投票系统的记录
关键在votetime(时间列)和uid(被投票人列)
想达到的效果是同一个被投票人在同一时间的多次投票只留下一个,其余的删除即可。
也就是说当uid和votetime都相等时,不论多少条数据只留下一条,其余的删除

解决方案 »

  1.   

    delete from tbname where id in (select id from (select id from tbname group by uid,votetime)b) ;
      

  2.   

    你的votetime不相同嘛就是说当uid和votetime都相等时,不论多少条数据只留下一条,其余的删除DELETE A FROM TT A INNER JOIN TT B ON A.uid=B.uid
    AND A.votetime=B.votetime AND A.ID>B.ID
      

  3.   

    先查一般都重复多少条
    select max(id),count(1) from tbname group by votetime,uid having count(*)>1
    再根据id去删除。
    delete from tbname where id in(select max(id) from tbname group by votetime,uid having count(*)>1)
      

  4.   

    请问group by 两个可以么
      

  5.   

    delete A
    from tb A,tb B
    where A.uid=B.uid and A.votetime=B.votetime A.id>B.id