这个错误实际上也不能称之为咱们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 WHERE s2.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 WHERE s2.Cno IN( SELECT Cno FROM cose WHERE Cname='DS' ) )) AS a ) ;
eg:目前我只在mysql中遇到过这个问题,所以有什么学习问题,欢迎同学们在评论区留言讨论。