Mysql

如何在 GROUP BY 查詢中獲取 MAX 和 MIN?

  • June 6, 2020

在此查詢中:

SELECT col1, col2, col3
FROM table1
GROUP BY col1

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

如何選擇MAXMIN的每個值col1

就像是:

SELECT col1, minimum of col2, maximum of col2, minimum of col3, maximum of col3

你會相信…

SELECT col1, MIN(col2), MAX(col2), MIN(col3), MAX(col3)
 FROM table1
GROUP BY col1;

…?


每行包含 col2 和 col3 的第一個值,用於 col 的每個唯一值。

這種說法並不完全正確。這可能是您所看到的,但不要認為這是有意義的,也不要根據這種觀察編寫程式碼。如果不是針對偏離標準 SQL 處理的 MySQL 擴展,您的原始查詢將根本無效GROUP BY

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

…這是您在初始查詢中所做的,col2 和 col3 不是非聚合列(未應用聚合函式的列,而不是分組依據)。當你這樣做…

伺服器可以從每個組中自由選擇任何值,因此除非它們相同,否則選擇的值是不確定的

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

引用自:https://dba.stackexchange.com/questions/48203