如何在 GROUP BY 查询中获取 MAX 和 MIN?

Goo*_*bot 3 mysql select mysql-5.5 group-by

在这个查询中:

SELECT col1, col2, col3
FROM table1
GROUP BY col1
Run Code Online (Sandbox Code Playgroud)

每行包括 的第一个值col2col3的每个唯一值col1

如何选择MAXMIN的每个值col1

就像是:

SELECT col1, minimum of col2, maximum of col2, minimum of col3, maximum of col3
Run Code Online (Sandbox Code Playgroud)

Mic*_*bot 14

你会相信吗...

SELECT col1, MIN(col2), MAX(col2), MIN(col3), MAX(col3)
  FROM table1
 GROUP BY col1;
Run Code Online (Sandbox Code Playgroud)

……?


对于 col 的每个唯一值,每一行都包含 col2 和 col3 的第一个值。

这种说法并不完全正确。这可能是您所看到的,但不要认为这是有意义的,也不要基于此观察编写代码。如果您的原始查询不适用于偏离标准 SQL 处理的 MySQL 扩展,则根本无效GROUP BY

MySQL 扩展了 的使用,GROUP BY以便选择列表可以引用GROUP BY子句中未命名的非聚合列。

...这是您在初始查询中所做的,col2 和 col3 不是非聚合列(未应用聚合函数的列,而不是分组依据)。当你这样做...

服务器可以自由地从每个组中选择任何值,因此除非它们相同,否则选择的值是不确定的

http://dev.mysql.com/doc/refman/5.5/en/group-by-extensions.html