有表 A B C D E F GA.id = B.aid = C.aid = D.aid = E.aid = F.aid = G.aid现在要把id为1的数据在所有表中全部删除刚开始写的循环删除 但执行效率太慢了有没有更好的办法使效率更高

解决方案 »

  1.   

    DELETE A,B,C,D,E,F,G FROM A,B,C,D,E,F,G WHERE 
    A.id = B.aid 
    and
    A.id= C.aid 
    and
    A.id= D.aid
     and
    A.id= E.aid 
    and
    A.id= F.aid
    and
    A.id = G.aid
      

  2.   

    DELETE A,B,C,D,E,F,G FROM A,B,C,D,E,F,G WHERE  
    A.id = B.aid  
    and
    A.id= C.aid  
    and
    A.id= D.aid
     and
    A.id= E.aid  
    and
    A.id= F.aid
    and
    A.id = G.aid 
    and A.id=1;
      

  3.   

    还没有加入ID=1
    DELETE A,B,C,D,E,F,G FROM A,B,C,D,E,F,G WHERE 
    A.id = B.aid 
    and
    A.id= C.aid 
    and
    A.id= D.aid
     and
    A.id= E.aid 
    and
    A.id= F.aid
    and
    A.id = G.aid
    AND A.ID=1
      

  4.   

    这种貌似不行啊 在phpmyadmin中执行为 “已删除 0 行。”数据确实是存在的 
      

  5.   

    设置级联删除
    贴建表及插入记录的SQL,
      

  6.   

    DELETE A,B,C,D,E,F,G 
    FROM A,B,C,D,E,F,G 
    WHERE A.id = 1
    and B.aid =1
    and C.aid = 1  
    and D.aid = 1
    and E.aid = 1  
    and F.aid = 1
    and G.aid = 1
      

  7.   

    狼兄 这种是可以的 但还有一个小问题 如果A,B,C,D,E...这几个表中有一个表没有符合条件的记录 则DELETE语句不会删除任意一个表的记录 我想要的结果是全部删除 这个要怎么改呢 求指教 先拜谢了
      

  8.   

    分开执行,在相应的字段上建立索引
    delete from a where id=1
    ..delete from g where aid=1
      

  9.   

    索引已经加上 DELETE FROM A WHERE `id` = 1;DELETE FROM B WHERE `aid` = 1;DELETE FROM C WHERE `aid` = 1;DELETE FROM D WHERE `aid` = 1;DELETE FROM E WHERE `aid` = 1;DELETE FROM F WHERE `aid` = 1;DELETE FROM G WHERE `aid` = 1但我感觉效率应该出在循环执行sql语句上面 每执行一条sql语句就打开一个mysql的资源句柄 加上数据量大 执行效率就不高 所以如果把sql放在一起一块执行 应该效率会提升 不知理解的是否正确 请大家指教
      

  10.   


    $sql = 'DELETE FROM A WHERE id=1;DELETE FROM B WHERE aid=1;DELETE FROM C WHERE aid=1;DELETE FROM D WHERE aid=1;DELETE FROM E WHERE aid=1;DELETE FROM F WHERE aid=1;DELETE FROM G WHERE aid=1 ';
    shell_exec('mysql -uroot -p1234 aaa -e "'.$sql.'"');
    这样就好许多了 这就结贴