出现这种错误,我属实焦头烂额了一会儿,这个错误基本可以分为以下两种情况:
一:你的字段类型是varchar,但是你这样进行操作,是不对的,
UPDATE StuCose SET Cno=60
应该是:
UPDATE StuCose SET Cno='60'
二:你更新操作进行子查询时,需要的两个表的相同的字段的类型不同,比如你的cose表中的Cno是int类型,
编辑
但是你的stucose表中是varchar类型
编辑
,这个时候类似这样进行了子查询的update就会报错
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 ) ;
总结:1:要注意字段类型的sql语法规范
2:要注意子查询时不同表间相同的字段类型要相同。