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

MySQL单表UPDATE语句用HAVING报错,咨询是否需多表及修正方案

问题分析与解决方案

你的问题出在UPDATE语句里错误使用了HAVING子句——HAVING的作用是过滤分组后的聚合结果,必须搭配GROUP BY使用,而你的更新场景不需要对数据分组,直接用WHERE子句就能完成行级筛选,这就是报错的核心原因,完全不需要用到多表更新。

正确的UPDATE语句

直接把所有筛选条件放到WHERE里即可,写法如下:

UPDATE products_test
SET price = ROUND(price * 1.06, 0)
WHERE brand = 44
  AND category IN (20, 22)
  AND id NOT IN (17466, 17467);

为什么你的SELECT语句能运行?

如果你的SELECT语句用了HAVING还能正常执行,大概率是因为SELECT里搭配了GROUP BY(比如对id、brand等字段做了分组),这时候HAVING是合法的。但UPDATE操作是针对单条数据行的更新,不需要分组逻辑,所以HAVING在这里完全不适用,属于语法误用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:45:43