mysql - 如何使用Max聚合函数获取行的值?

标签 mysql sql aggregate-functions

我有一个评论表:

+----------+---------------------+----------+
| match_id |     timestampe      | comment  |
+----------+---------------------+----------+
|      100 | 2014-01-01 01:00:00 | Hi       |
|      200 | 2014-01-01 01:10:00 | Hi1      |
|      300 | 2014-01-01 01:20:00 | Hi2      |
|      100 | 2014-01-01 01:01:00 | Hello    |
|      100 | 2014-01-01 01:02:00 | Hello1   |
|      200 | 2014-01-01 01:11:00 | hey      |
+----------+---------------------+----------+

我想从表格中获取以下信息

SELECT match_id, max(timestampe) as maxtimestamp, count(match_id) as comments_no
FROM comments
GROUP BY match_id
order by maxtimestamp DESC

前面的解释效果很好,但问题是当我想获取 maxtimestamp 的注释时。

如何使用最优化的查询获取每场比赛的最新评论(最大时间戳的评论)?

最佳答案

你可以这样做。 这也是相当理想的。

SELECT c.comment, m.* 
FROM 
comments c 
JOIN
(
    SELECT t.match_id, max(t.timestampe) as maxtimestamp, count(t.match_id) as comments_no
    FROM comments t
    GROUP BY t.match_id
) m on c.match_id = m.match_id and c.timestampe = m.maxtimestamp

SQL Fiddle

关于mysql - 如何使用Max聚合函数获取行的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20928010/

相关文章:

sql - 重命名数据,然后删除重复项

C# 子查询不工作

php - Laravel 有很多在上部模型上有一个 where

php - 按照另一个顺序从表中的一列中为每个不同的条目选择完整的第一行

mysql - 使用子查询与 LEFT JOIN 一起选择 MAX 值

对具有 from 至 条目的表进行 SQL 联接

MySQL 数据库中的表连接?

mysql - MySQL 中何时使用单引号、双引号和反引号

sql - 根据一组计算的时间范围 mysql 拉取平均值和计数

mysql - 如何在Mysql中为GROUP BY定义自己的聚合函数?