假如只保留符合条件的前十条记录
select id from table where name='aaa' order by id limit 0,10
将结果转换成形如1,3,4,7,66,44的字符串a
delete from table where name='aaa' and id not in(a)

解决方案 »

  1.   

    shuixin 的办法很好呀,
    你非要在网站高峰时进行这样的样的操作么??!
    操作前你的表中有多少条记录??
    not in 是很费时的,会大大加重你的server的负担,搞不好会死嗲建议你采取双表方式,一主表加一附表,平时select主表,insert双表,
    在操作时先
    delete from table(清主表) ,然后再把从表符合条件的数据复制过来。
    在对select速度要求很高,且你的insert不是很频繁,
    这是最安全最迅速的办法。
    我曾在一个百万级的表中这样做过,效果不错,而且保存了历史纪录。