出现这种错误,我属实焦头烂额了一会儿,这个错误基本可以分为以下两种情况:
一:你的字段类型是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:要注意子查询时不同表间相同的字段类型要相同。