各位大虾,小弟写了一个语句,用于更新各类别的电影数量,分类是2级分类,但是为什么不能用啊……  
UPDATE  am_class  c  LEFT  JOIN  am_movie  m  ON  (c.cid=m.mclass)  SET  c.cmovienum  =  (SELECT  COUNT(*)  FROM  am_movie  WHERE  mclass  IN  (SELECT  cid  FROM  am_class  WHERE  cparent=c.cid  OR  cid=c.cid));  
 
但是如下语句都可以使用  
UPDATE  am_class  c  LEFT  JOIN  am_movie  m  ON  (c.cid=m.mclass)  SET  c.cmovienum  =  (SELECT  COUNT(*)  FROM  am_movie  WHERE  mclass=c.cid);  
 
SELECT  COUNT(*)  FROM  am_movie  WHERE  mclass  IN  (SELECT  cid  FROM  am_class  WHERE  cparent=1  OR  cid=1);  
 
是不是表别名在子查询中还有作用域之类的东西呢?如果要改的话,应该怎么更改哦?先在这里猛谢一下了.....  鞠躬360度...

解决方案 »

  1.   

    MYSQL不像SQL SERVER,不支持这样的UPDATE。
    UPDATE 多个表只能
    UPDATE A,B SET A.。
      

  2.   

    但是这里我只update了一个表am_class啊,后面那一段只是为了确定update的范围,但是为什么用第一个查询就说最后一个c.cid找不到表c呢?
      

  3.   

    为了确定UPDATE的范围不假。不过MYSQL中只能这样更新。建议好好看看手册中关于多表更新的部分。