mysql - 为什么 "GROUP BY"取分组行中的第一行?

标签 mysql sql

为什么 GROUP BY 取(返回)分组行中的第一行? 是否有内置的 DESC 或 ASC 排序?

最佳答案

MySQL 扩展了 GROUP BY 的使用,以便选择列表可以引用未在 GROUP BY 子句中命名的非聚合列。这意味着前面的查询在MySQL中是合法的。您可以使用此功能避免不必要的列排序和分组,从而获得更好的性能。然而,这主要是当每个组中未在 GROUP BY 中命名的每个非聚合列中的所有值对于每个组都相同时非常有用。 服务器可以自由地从每个组中选择任何值,因此除非它们相同,否则所选择的值是不确定的。 此外,添加 ORDER BY 子句不会影响每个组中值的选择。选择值后会对结果集进行排序,ORDER BY 不会影响服务器选择每个组中的哪些值。

http://dev.mysql.com/doc/refman/5.0/en/group-by-handling.html

关于mysql - 为什么 "GROUP BY"取分组行中的第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26527627/

相关文章:

mysql - 如何动态选择列? mysql

sql - 使用 DateDim 连接值,其中空日期值将采用表中最后一个非空值

sql - 使用 longtext 列将表转换为 JSON 数组

php - 无法连接 MySQL 数据库,出现错误 "Fatal error: Class ' mysql_connect' not found in...”

c# - 使用mysql插入数据时出现语法错误

mysql - 是否可以将此业务逻辑放在 SQL 查询中?

mysql - 根据两个id获取计数

php - MySQL "Incorrect String Value"utf8mb4 编码错误

php - 存储内容,例如 MediaWiki 中的页面

php - 在php中从数据库中获取字符串仅返回空格之前的部分