出现这种错误,我属实焦头烂额了一会儿,这个错误基本可以分为以下两种情况:
一:你的字段类型是varchar,但是你这样进行操作,是不对的,
UPDATE StuCose
SET Cno=60
应该是:
UPDATE StuCose
SET Cno='60'
二:你更新操作进行子查询时,需要的两个表的相同的字段的类型不同,比如你的cose表中的Cno是int类型,
文章图片
【学习问题|解决sql update 1292 - Truncated incorrect DOUBLE value:】但是你的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
WHEREs2.Cno IN(
SELECT Cno
FROM cose
WHERE Cname='DS'
)
)) AS a)
;
总结:1:要注意字段类型的sql语法规范
2:要注意子查询时不同表间相同的字段类型要相同。
推荐阅读
- 学习问题|mysql操作中 出现You can‘t specify target table for update in FROM clause错误的解决方法
- 学习问题|idea连接mysql设置时区
- mysql|MySQL(事务1(锁与隔离级别))
- ②|mysql ---- 全文索引(中文语义分词检索)
- 数据库相关|数据库相关知识(一)
- SSM|MyBatis和ORM的区别
- #|Mybatis——Mybatis表之间的关联关系和事务、缓存机制以及ORM
- 408学习笔记|【408计算机考研】操作系统——第二章 进程与线程(一)
- 面经总结|数据库MySQL---Redis