mysql - 按列分组后获取mysql中最大的年份值

标签 mysql group-by

下表包含一个id和一个YearGroups

     GroupingTable
     id       |    Year    |   Groups    
      1       |     2000   |     A
      2       |     2001   |     B
      3       |     2001   |     A

现在我想选择最好的年份,即使是在按Groups 列分组之后也是如此

   SELECT 
         id, 
         Year,
         Groups
   FROM 
        GroupingTable
  GROUP BY 
         `Groups`
  ORDER BY Year DESC

下面是我所期待的,即使上面的查询没有按预期工作

     id       |    Year    |   Groups    
      2       |     2001   |     B
      3       |     2001   |     A

最佳答案

您需要学习如何使用 aggregate functions .

SELECT 
     MAX(Year) AS Year,
     Groups
FROM 
    GroupingTable
GROUP BY 
     `Groups`
ORDER BY Year DESC

当使用 GROUP BY 时,只有您分组的列是明确的,因为它们在组的每一行上都具有相同的值。

其他列从组中的某一行中任意返回一个值。实际上,这是 MySQL(和 SQLite)的行为,但由于歧义,它在标准 SQL 和所有其他品牌的 SQL 实现中都是非法查询。

有关这方面的更多信息,请参阅我对 Reason for Column is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause 的回答

关于mysql - 按列分组后获取mysql中最大的年份值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39987928/

相关文章:

mysql - SQL - 'partial' 分组依据,不同列的不同行为

mysql - 改进 MySQL 查询性能

mysql - 在 VB.net 中读取和解析大型分隔文本文件

php - 如果输入更改,用户填充框将不会更改

mysql - aws lambda 函数连接问题 rds 太多

mysql - 将文件保存到 Coldfusion 中的服务器,存储在 CF 临时目录中而不是指定的目的地

sqlite - SQLite改进大小写和按性能分组

mysql - MySQL中 "$"是什么意思?

mysql在where条件下按列分组

r - 在函数中使用 dplyr group_by