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

MySQL作业语句执行无结果返回,请求技术排查协助

排查你的MySQL查询无返回结果的问题

我来帮你拆解下问题根源,你的SQL语句里有两个关键错误,导致明明存在符合条件的数据却查不到结果:

  • 错误1:用WHERE子句过滤聚合结果
    WHERE子句的作用是在分组前筛选原始行数据,而invoice_avg是分组后才计算出来的聚合别名,这时候WHERE根本识别不了这个别名,也不能直接在WHERE里使用聚合函数。要过滤分组后的聚合结果,必须用HAVING子句。

  • 错误2:错误的引号使用
    你用双引号"invoice_avg"把别名括起来了,在MySQL默认配置下,双引号会被解析成字符串常量,而不是你定义的列别名。也就是说你其实是在判断字符串"invoice_avg"是否大于300,这显然永远不成立,自然不会返回任何结果。ORDER BY里的双引号也犯了同样的错误。

修正后的SQL语句

SELECT 
  vendor_id,
  SUM(invoice_total) AS invoice_gt,
  AVG(invoice_total) AS invoice_avg,
  COUNT(invoice_id) AS invoice_qty
FROM invoices
GROUP BY vendor_id
HAVING invoice_avg > 300
ORDER BY invoice_avg DESC;

关键修改说明

  1. 将WHERE "invoice_avg" > 300替换为HAVING invoice_avg > 300,HAVING是专门用来过滤分组后聚合结果的子句。
  2. 去掉别名周围的双引号,直接使用invoice_avg,让MySQL正确识别这是我们定义的聚合列别名。
  3. ORDER BY子句里也直接使用invoice_avg,确保按聚合后的平均值降序排序。

运行修正后的语句,应该就能得到你预期的结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:04:43