UPDATE test3  t SET col3=(SELECT col3 FROM (SELECT col1,col2,col3 FROM test3 WHERE col1='1') p WHERE p.col2=t.col2  ) WHERE t.col1='2' AND t.col2 IN(SELECT col2 FROM test3 WHERE col1='1')test3为表名

解决方案 »

  1.   

    谢谢,可以了,后面还要加上 where exists (SELECT col3 FROM (SELECT col1,col2,col3 FROM test3 WHERE col1='1') b WHERE b.col2=t.col2)还是不太明白,到底在什么情况下如何避免“单行子查询返回多于一个行”呢?请高手举例指点
      

  2.   

    UPDATE  test3    t  SET  col3=(SELECT  
    max(col3)  --此处
    FROM  (SELECT  col1,col2,col3  FROM  test3  WHERE  col1='1')  p  WHERE  p.col2=t.col2    )  WHERE  t.col1='2'  AND  t.col2  IN(SELECT  col2  FROM  test3  WHERE  col1='1');用两个或多个查询结果去更新一个数据当然会出现这种错误了。