【学习问题|mysql操作中 出现You can‘t specify target table for update in FROM clause错误的解决方法】这个错误实际上也不能称之为咱们sql语句写的不行,实际上是我们在一些细节上没有遵循mysql的语法规范。
问题所在:我们一个sql语句中先select这个表,然后再update这个表的内容。
错误示范:
UPDATE StuCose
SET Grade=60
WHERE Sno IN(
SELECT Sno
FROM stucose
WHERE Grade<=ALL(
SELECT MIN(Grade)
FROM stucose s2
WHEREs2.Cno IN(
SELECT Cno
FROM cose
WHERE Cname='DS'
)
)
)
;
正确示范: 我们应该可以把从这个表中select到的数据当作一个新表,在使用一下select语句进行一下查询,如下面这样:
UPDATE StuCose
SET Grade=60
WHERE Sno IN(
SELECT Sno
FROM (
SELECT Sno
FROM stucose
WHERE Grade<=ALL(
SELECT MIN(Grade)
FROM stucose s2
WHEREs2.Cno IN(
SELECT Cno
FROM cose
WHERE Cname='DS'
)
)) AS a)
;
eg:目前我只在mysql中遇到过这个问题,所以有什么学习问题,欢迎同学们在评论区留言讨论。
推荐阅读
- 学习问题|解决sql update 1292 - Truncated incorrect DOUBLE value:
- 学习问题|idea连接mysql设置时区
- mysql|MySQL(事务1(锁与隔离级别))
- ②|mysql ---- 全文索引(中文语义分词检索)
- 数据库相关|数据库相关知识(一)
- SSM|MyBatis和ORM的区别
- #|Mybatis——Mybatis表之间的关联关系和事务、缓存机制以及ORM
- 408学习笔记|【408计算机考研】操作系统——第二章 进程与线程(一)
- 面经总结|数据库MySQL---Redis