You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL多行UPDATE查询执行报错:批量延长借阅到期日期时子查询返回多行结果

解决MySQL UPDATE语句中子查询返回多行的报错问题

嗨,我来帮你搞定这个报错的问题~

为啥原来的语句会报错?

你写的那条UPDATE语句里,嵌套的子查询(SELECT * FROM (SELECT dueDate FROM librarylog)tblTmp)会把表中所有的dueDate值都查出来(一共3行),但DATE_ADD函数一次只能处理单个日期值,所以数据库就抛出了#1242 - Subquery returns more than 1 row的错误。其实完全没必要绕这么大弯子引用当前行的dueDate,直接用字段名就行啦。

正确的SQL写法

这里有两种简洁又正确的写法,任选其一就行:

第一种是用DATE_ADD函数:

UPDATE librarylog 
SET dueDate = DATE_ADD(dueDate, INTERVAL 1 WEEK);

第二种是直接用日期运算符,更简洁:

UPDATE librarylog 
SET dueDate = dueDate + INTERVAL 1 WEEK;

这两种写法都会遍历表中的每一行,把该行的dueDate字段值自动加上一周,完全符合你的需求。

验证修改结果

执行完UPDATE之后,你可以用下面的查询确认修改是否生效:

SELECT * FROM librarylog;

修改后的预期数据应该是这样的:

patronNamebookIddueDate
John242024-01-21
Sam422024-01-14
Bob132024-01-14

内容的提问来源于stack exchange,提问作者Dhanwanth Parameswar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 12:32:34