$sql="UPDATE a SET status='0' WHERE 

SELECT b.id,b.expressions,
       a.id 
   
   FROM b,a  
   
   WHERE b.id=".$id." AND b.expressions=0 AND b.id=a.id

) AND name=$login_name";
哪里错了?

解决方案 »

  1.   

    应该是这样吧!
    UPDATE a SET status='0' where a.id in
    (
    SELECT b.id,b.expressions,
          a.id
     
      FROM b,a 
     
      WHERE b.id=".$id." AND b.expressions=0 AND b.id=a.id) AND name=$login_name
      

  2.   

    你总得where(得where个条件吧)
      

  3.   

    where的问题。2楼的正解你设置了查询的内容。却没有规定查询的条件……
      

  4.   

    #1241 - Operand should contain 1 column(s) 
    错误提示
      

  5.   

    2楼的也不合理吧。a.id in
    (
    SELECT b.id,b.expressions,
          a.id
     
      FROM b,a 
     
      WHERE b.id=".$id." AND b.expressions=0 AND b.id=a.id)
    这里面的select 结果有b.id b.expressions a.id三个字段呐。这里的select 里应该只能一个字段吧LZ要把条件说清楚。符合什么条件才更新?
      

  6.   

    我刚才改的就是只取一个字段:UPDATE a SET status='0' where a.id in //好像这种写法不行,我单独测试下边的语句是没问题的( 
    SELECT b.id  FROM b,a   WHERE b.id=".$id." AND b.expressions=0 AND b.id=a.id ) 
      

  7.   

    #1093 - You can't specify target table 'user' for update in FROM clause