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));```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值