我有个表t,含a,b,c,d四个字段,无主外键、约束关系等,但数据量很大,每次操作只能排序后操作一部分,比如 select * from t order by t.a asc limit 200 offset 1000,然后,我想删除这次选择出来的这200条记录,如何实现呢?

解决方案 »

  1.   

    delete from t order by t.a asc limit 200 offset 1000
      

  2.   

    这样试过,不行啊,语法错误:
    ********** 错误 **********
    错误: 语法错误 在 "order" 或附近的
    并且,即使能行的话,也只能是大致正确,不能保证delete的完全就是select出来的内容。
      

  3.   

    哦,DELETE中只能 delete from t order by t.a asc limit 1000
      

  4.   

    试一下
    delete a from t a,(select * from t order by t.a asc limit 200 offset 1000) b where a.id=b.id
      

  5.   

    解释一下背景:
    定期检测表t的内容,只保留预先定义的容量,对于超过容量的部分则导出到文件中(通过copy 排序后的表内容 to file),同时在数据库表中删除掉导出的记录,但不允许丢失记录。