gpt4 book ai didi

mysql - select max() 返回错误的列

转载 作者:行者123 更新时间:2023-11-29 13:23:05 27 4
gpt4 key购买 nike

我正在尝试从具有 max(col) 的表中选择一行。但是匹配的列是错误的。它返回表本身的第一行,而不是 max() 值的相应列。

select 
article, max(totalsale) as maxsale
from
(select
article, sum(sold) as totalsale
from art6maanden
group by article) as maxsale

;

因此子查询将返回:

productA | 12
....
productZ | 70

完整的查询返回:产品A | 70

它应该返回产品Z | 70 因为 70 是最大值

我正在使用 MySQL

最佳答案

实际上,MS SQL Server 会提示上述查询,并显示错误消息,指出列“maxsale.article”在选择列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。

所以,也许您可​​以添加一个 ORDER BY 语句。

SELECT TOP 1 article, totalsale as maxsalevalue
FROM
(SELECT article, sum(sold) as totalsale
FROM art6maanden
GROUP BY article) as maxsale
ORDER BY totalsale DESC

编辑 由于不允许 ORDER BY。我将建议使用 HAVING 语句的解决方案。

SELECT article, sum(sold) as totalsale
FROM art6maanden
GROUP BY article
HAVING sum(sold) = (
SELECT MAX(totalsales) AS MaxSale
FROM
(SELECT article, sum(sold) as totalsale
FROM art6maanden
GROUP BY article) Ref
)

上面的查询是通过以下3个步骤完成的。

  1. 查找每篇文章的总销售额;
  2. 找出所有总销售额的最大值;
  3. 从表中查找总销售额与最大值相同的记录。因此,如果有多条记录具有最大值,则应列出所有记录,而不是仅列出一条最大记录。

如有错误,请指正。

关于mysql - select max() 返回错误的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20516776/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com