MySQL的更新语句update中可以用子查询吗? update score set 姓名='王五' where 总分=(select min(总分) from score);我这样用为什么出错?/*******************
CREATE TABLE IF NOT EXISTS score(
学号 BIGINT UNSIGNED,
姓名 varchar(10),
数学 TINYINT UNSIGNED,
英语 TINYINT UNSIGNED,
物理 TINYINT UNSIGNED,
计算机综合 TINYINT UNSIGNED,
总分 int UNSIGNED
);已确保各字段数据正确插入
********************/
求教!

解决方案 »

  1.   

    MySQL> update score set 姓名='王五' where 总分=(select min(总分) from score);ERROR 1093 (HY000): You can't specify target table 'score' for update in FROM clause/*报这个错误*/
      

  2.   

    这样试试,update score set …… where 总分 in ( SELECT * FROM (SELECT min(总分) AS 总分 FROM score)t)
      

  3.   

     update score set 姓名='王五' order by 总分 asc limit 1;
      

  4.   

    update score set 姓名='王五' order by 总分 asc limit 1;/*这样可以实现*/但是,我的问题是 MySQL的更新语句update中可以用子查询吗?
      

  5.   

    mysql中 update的表 不能出现在第一层的子查询中,参考4楼的方法让表绕过第一层子查询
      

  6.   

    update + join的语句语法是Update A inner join (select min(score) as score from A) B on A.score=B.score set A.name='wangwu' 
      

  7.   

     update score set 数学=(select min(数学) from score)-4 where 姓名='王五';/**同样报错,解决的方法也是创建临时表绕过第一层子查询吗?**/
      

  8.   

    试一下不就知道了
    UPDATE score  SET 数学=(SELECT 数学 FROM (SELECT MIN(数学) AS 数学 FROM score )t)-4 WHERE 姓名='王五';