有2张表,表A和表B,A为主键表,A.time_id = B.time_id
大致结构如下:
A表:
time_id   |  time
1         |  2013-06-26 12:27:27
2         |  2013-06-27 12:36:30  
          .
          .
          .B表
time_id   |  province_id  | temperature 
1         |  1            |30
2         |  1            |26
1         | `2            |26
2         |  2            |24
1         |  3            |31
2         |  3            |30
          .
          .
          .
我要删除A,B表中一个月前的所有数据,应该怎么做?另外 B表中的数据量特别大。
求高手解答!MySQL行业数据sql

解决方案 »

  1.   

    A、B两表级联删除
    delete from a where  time<=curdate()-interval 1 month
      

  2.   

    delete A,B  from A,B where A.time_id = B.time_id and A.time<curdate()-interval 1 month
      

  3.   

    那就直接删除
    delete A,B from a,B where  time<=curdate()-interval 1 month
      

  4.   

    Cannot delete or update a parent row: a foreign key constraint fails (`tempnamedatabase`.`B`, CONSTRAINT `IDX_T_PRF_DISKGROUP_FK1` FOREIGN KEY (`TIME_ID`) REFERENCES `A` (`TIME_ID`))
      

  5.   

    A、B有主外键关系,先删除B表,再删除A表试试
      

  6.   

    对于你的回答我表示很无语,如果能分步删我早分步删了,以上只是例子,
    实际上A表中有2000多条数据,B表中就有2000*800条数据
    如果用A表中的time_id作为条件去删除B表中数据,然后再删A表 
    用java做直接就内存溢出了,所以才从数据库入手。
    Mysql有没有像Hibernate那样删除主表直接清除外键表数据的操作?或者用触发器怎么实现?请高手解答,
      

  7.   

    看来你只有
    SET FOREIGN_KEY_CHECKS = 0
    删除
    后再
    SET FOREIGN_KEY_CHECKS = 1
    建议你建立级联删除