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

MySQL聚合查询添加WHERE子句触发#1292错误的解决求助

问题排查与解决方案

错误原因分析

你遇到的#1292 Truncated wrong DOUBLE value: 'user'错误,根源有两个:

  1. 你在WHERE子句里写了'user' = 1,这里的单引号把user变成了字符串常量,MySQL会尝试把字符串'user'转换成数字和1比较,自然会触发类型转换失败的报错。
  2. 就算去掉单引号写成user = 1,依然会报错——因为WHERE子句的执行优先级在SELECT之前,此时user这个别名还未被创建,MySQL无法识别它。

正确写法

这里提供两种可行的解决方案,你可以根据数据量和业务需求选择:

方案1:使用HAVING子句筛选分组后的数据

HAVING是在GROUP BY和SELECT之后执行的,可以直接引用SELECT里定义的别名,写法简洁直观:

select 
  `submission_id`, 
  max(case when `key` = 'id_usuario' then value end) as user, 
  max(case when `key` = 'date_atualizado' then value end) as Data, 
  max(case when `key` = 'peso' then value end) as Peso 
from wp_e_submissions_values 
group by `submission_id`
HAVING user = 1;

方案2:提前筛选原始数据(性能更优)

如果你的表数据量较大,优先考虑在分组前就筛选出目标提交记录,减少分组处理的数据量,提升查询性能:

select 
  `submission_id`, 
  max(case when `key` = 'id_usuario' then value end) as user, 
  max(case when `key` = 'date_atualizado' then value end) as Data, 
  max(case when `key` = 'peso' then value end) as Peso 
from wp_e_submissions_values 
where submission_id in (
  select submission_id 
  from wp_e_submissions_values 
  where `key` = 'id_usuario' and value = '1'
)
group by `submission_id`;

注意:如果value字段是字符串类型,value = '1'要加单引号;如果是数字类型,直接写value = 1即可,可根据你的表结构调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:07:39