如何在DATE返回第一条记录的MySQL GROUP?

时间:2012-11-25 23:09:36

标签: mysql sql

我在表格中有30个记录具有相同的标题,但每个记录具有不同的ID和日期。如何按日期在最近的查询中返回?

表格如下:

Id - Title - Date
-----------------
1 - africa - 2012-11-27
2 - africa - 2012-11-26
3 - africa - 2012-11-25

我需要一个返回Id为3的记录的查询,这是该日期的最新记录。直到现在我使用GROUP BY的所有尝试只返回Id为1的记录。我该怎么做?

2 个答案:

答案 0 :(得分:4)

您希望获得第一条记录,但这不是最近的。子查询背后的想法是它获得每个标题的第一个日期,并且只要它与标题和日期相匹配就加入它。

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  title, MIN(DATE) minDate
            FROM tableName
            GROUP BY title
        ) b ON a.title = b.titleAND
                a.date = b.maxDate

答案 1 :(得分:2)

你想要groupwise maximum

SELECT * FROM my_table NATURAL JOIN (
  SELECT   Title, MAX(Date) Date
  FROM     my_table
  GROUP BY Title
) t

sqlfiddle上查看。

如果您使用最高id定义“最新”,而不是使用最新Date定义

SELECT * FROM my_table NATURAL JOIN (
  SELECT   Title, MAX(id) id
  FROM     my_table
  GROUP BY Title
) t

sqlfiddle上查看。