下表包含一个id
和一个Year
和Groups
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/