mysql - 汇总值后将返回记录限制为 5
问题描述
请有人帮忙。我在这个查询中总结了一个组列,但是当我使用表别名或者即使我没有使用表别名时,外部的内部查询列也无法识别。目的是返回从第一个表中按名称进行汇总和分组后具有最高值的记录。我得到的错误是无法识别外部查询中引用的子查询列。它不能用别名或子查询中没有别名来识别它们。
SELECT t1.fullname, t2.col2, t2.col3, t2.qty AS 'QUANTITY', t2.value AS 'VALUE',
YEAR(t2reg_date) AS 'YEAR'
FROM table1 t1
JOIN
(
SELECT col2, col3, SUM(qty) AS 'QUANTITY', SUM(value) AS 'VALUE',
YEAR(date) AS 'YEAR' FROM table2 WHERE YEAR(date) BETWEEN '2012' AND '2019' AND
col3 LIKE '%test%'
GROUP BY foreign_col_id
HAVING value > 1000000
) t2
ON t1.id = t2.foreign_col_id
GROUP BY t1.fullname
ORDER BY t2.value DESC
LIMIT 5;
我还观察到 SUM() 在分组时不能与 LIMIT 一起使用,它总是返回空集。
解决方案
子查询会根据您选择的内容生成一个带有列名的“表”。您选择 col2 和 col3,因此有“列”t2.col2 和 t2.col3。但是当您指定别名时,如在 中SUM(qty) AS 'QUANTITY'
,别名将用作列名。因此,要在外部查询中引用它,请使用 t2.QUANTITY。
推荐阅读
- c# - C#用阴影为图像着色
- mysql - 搭建一个节点用户访问控制管理模块,与MySQL协同工作,表达为中间件
- java - E/RecyclerView:没有附加适配器;跳过布局 (Android)
- css - Bootstrap 动态药丸只能使用一次?
- java - 如何从查询中获取结果?(MySQL)
- java - 有人可以解释一下递归功能是如何在工作树数据结构上工作的吗
- r - 读取多个文件以对每个文件运行分析并将它们存储在 r studio 中的一个文件中
- c# - EFCore 2.1 存储过程加载相关数据
- c# - 集成测试期间的 IOC 容器锁定
- dart - 检测应用程序在模拟器或真实设备上运行