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

SQL统计重复行更新列时子查询别名DailyPointing报错1054如何解决

问题根因

你的SQL写法存在两个核心错误:

  • 语法层面:SQL执行顺序中,子查询内定义的别名无法直接在外层UPDATE的SET子句中引用,同时你将in子句直接放在除法运算符后的写法完全不符合SQL语法规则。
  • 逻辑层面:原UPDATE语句没有和统计重复次数的子查询做字段关联,系统无法匹配每一行对应的重复次数值,自然会提示DailyPointing字段不存在。

正确写法(适配MySQL环境,对应报错码1054为MySQL原生报错)

使用多表关联更新的方式,先关联统计好的重复次数结果再执行更新:

UPDATE company_parc cp
INNER JOIN (
    SELECT MchCode, PointingDate, COUNT(*) AS DailyPointing
    FROM company_parc
    GROUP BY MchCode, PointingDate
    HAVING COUNT(*) > 1
) stat 
ON cp.MchCode = stat.MchCode AND cp.PointingDate = stat.PointingDate
SET cp.TheoreticalHoursByMonth = cp.TheoreticalHoursByMonth / stat.DailyPointing;

前置校验建议

为避免误更新数据,可先执行以下SELECT语句核对计算结果,确认逻辑正确后再执行UPDATE操作:

SELECT 
    cp.MchCode, 
    cp.PointingDate, 
    cp.TheoreticalHoursByMonth, 
    stat.DailyPointing,
    cp.TheoreticalHoursByMonth / stat.DailyPointing AS calculated_new_value
FROM company_parc cp
INNER JOIN (
    SELECT MchCode, PointingDate, COUNT(*) AS DailyPointing
    FROM company_parc
    GROUP BY MchCode, PointingDate
    HAVING COUNT(*) > 1
) stat 
ON cp.MchCode = stat.MchCode AND cp.PointingDate = stat.PointingDate;

提示:执行更新操作前建议先备份原表数据,避免误操作导致数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:45:03