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

来源:互联网 发布:程序员项目经历怎么写 编辑:程序博客网 时间:2024/06/07 16:21
错误信息:错误代码: 1093You 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));```
阅读全文
0 0
原创粉丝点击