mysql中UPDATE更新数据where以另一个selecet子句为结果的1093错误

错误信息:
错误代码: 1093
You can't specify target table 'score' for update in FROM clause
产生原因:MySQL中UPDATE更新数据where以另一个selecet子句为结果,并且select查询的表和update更新的表是同一个表,以一个的查询结果为基础再修改这表就会报错
错误示例:
```
UPDATE score  SET 成绩=成绩-10 WHERE score.学号 IN (
SELECT 学号 FROM score,lesson WHERE (score.课程号 = lesson.课程号 AND 课程名="数据库" AND 成绩<60) ) ;

``` 解决方法: 给update的where内的select查询结果一个别名, 再套一个select查询,以最外层的查询的结果为update的更新条件 示例: ```UPDATE score SET 成绩=成绩+10 WHERE score.学号 IN (SELECT * FROM ((SELECT 学号 FROM score WHERE 课程号 IN (SELECT 课程号 FROM lesson WHERE 课程名='数据库') AND 成绩<60 ) AS temp));```

你可能感兴趣的:(mysql)