数据表如下:
id(int),uid(int),message(varchar),time(datetime)
1,   1   ,   "fail"       ,'2007-05-20 12:00:00'
2,   1   ,   "fail"       ,'2007-05-20 12:20:00'
3,   1   ,   "fail"       ,'2007-05-20 12:30:00'
4,   2   ,   "success"    ,'2007-05-20 13:00:00'
5,   1   ,   "fail"       ,'2007-05-20 15:00:00'
6,   1   ,   "fail"       ,'2007-05-20 15:20:00'请问如果想要删除id为2,3和6的记录(在一定时间内id和message都相同的记录)sql语句应该怎样写?

解决方案 »

  1.   

    delete from [表名] where id=2 and id=3 and id=6
      

  2.   

    我需要实现的功能是删除在一定时间内连续生成的id和message都相同的记录,最终的效果是删除掉2,4,6号记录,而不是简单的where id=2 and id=3 and id=6条件而已
      

  3.   

    一定时间内连续生成的id和message都相同的记录  这个是什么意思?是要把相同time,id,message得记录都删除吗?
    另外,id也没有相同的,只有uid有相同的。
      

  4.   

    sorry,刚才写错了,id相同指的是uid相同,一定时间内连续生成的uid和message都相同的记录指的是我在'2007-05-20 12:00:00'生成了一个id为1的记录,随后在'2007-05-20 12:20:00'和'2007-05-20 12:30:00'又分别生成两条记录,并且这两条记录的uid,message和第一条记录相同,现在想把这两条记录删除掉。
    对于id为5,6的记录同理,只删除id为6的记录。由于中间有一条id为4的记录中message是success,所以保留id为5的记录。
      

  5.   

    delete a from tablename a,((select * from tablename b where b.id not in(
    select c.id from tablename c group by c.uid,c.message,date(c.time),hour(c.time)
    ))) d where a.id=d.id;我只想到这个.
      

  6.   

    我觉得不能按时间分组,因为每个时间都是不一样的,而且这种方式也只能保留一个message为fail的记录。也许单纯用sql实现不了这么复杂的功能,不过还是感谢你的回复!