mysql - MySQL做GROUP BY时自然是 "choose"哪一行?

标签 mysql sql

MySQL 在分组时如何决定使用哪一行的值?

id |  type |     timestamp
-------------------------------
1  |   3   | 2014-09-10 17:03:43
2  |   7   | 2014-09-10 17:15:00
3  |   18  | 2014-09-10 17:17:55
4  |   9   | 2014-09-10 18:01:30
5  |   18  | 2014-09-10 18:02:29
6  |   3   | 2014-09-10 18:06:26
7  |   3   | 2014-09-10 18:06:30

例如:

SELECT * FROM mytable GROUP BY type

这对时间戳有影响。

它是否使用第一个,最后一个,通过内部工作确定的东西?

最佳答案

如果不在GROUP BY 中的列上没有聚合函数(MIN、MAX、SUM 等),mysql 将返回不确定 值。在其他数据库中,这甚至是不允许的。

The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate

但是您可以启用 ONLY FULL GROUP BY模式。

关于mysql - MySQL做GROUP BY时自然是 "choose"哪一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917628/

相关文章:

Mysql Full Outer Join 临时表

当包装在 `WHERE` 中时,MySQL UDF 仅适用于 `IF` 子句

sql - 在 SQL 中,我怎样才能得到一个数学表达式来给我一个 double 而不是一个截断的 int?

mysql - 如何在mysql中设置选择序列的优先级

sql - 在 SQL 中,是否有类似于 countif 语句的内容或将分组结果显示为列而不是行的方法?

mysql - Rails 上的 ruby : Creating models from existing database?

c# - Entity Framework 对现有数据的流畅 API

javascript - 将 SQL 的表输出样式化到相应的 Bootstrap 列中

java - 使用 CASE 表达式的 JOOQ 排序

mysql - 使用聚合函数的问题