如何在MySQL组中按日期返回第一条记录?

如何在MySQL组中按日期返回第一条记录?,mysql,sql,Mysql,Sql,表中有30条记录,标题相同,但每个记录的ID和日期不同。如何在查询中按日期返回最近的日期 该表如下所示: Id - Title - Date ----------------- 1 - africa - 2012-11-27 2 - africa - 2012-11-26 3 - africa - 2012-11-25 我需要一个查询,返回Id为3的记录,即截止日期最近的记录。到目前为止,我一直尝试使用GROUPBY只返回Id为1的记录。我该怎么做呢?您想获得第一条记录,但这不是最近的记录。子

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

该表如下所示:

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

我需要一个查询,返回Id为3的记录,即截止日期最近的记录。到目前为止,我一直尝试使用GROUPBY只返回Id为1的记录。我该怎么做呢?

您想获得第一条记录,但这不是最近的记录。子查询背后的思想是,它获取每个标题的第一个日期,并在匹配标题和日期的情况下将其自身加入

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

你想得到第一张唱片,但那不是最近的。子查询背后的思想是,它获取每个标题的第一个日期,并在匹配标题和日期的情况下将其自身加入

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  title, MIN(DATE) minDate
            FROM tableName
            GROUP BY title
        ) b ON a.title = b.title AND
                a.date = b.maxDate
您想要:

在电视上看

如果您将“最近”定义为具有最高
id的,而不是具有最新
日期的

SELECT * FROM my_table NATURAL JOIN (
  SELECT   Title, MAX(id) id
  FROM     my_table
  GROUP BY Title
) t
请在上查看。

您想要:

在电视上看

如果您将“最近”定义为具有最高
id的,而不是具有最新
日期的

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

查看它。

这不会返回带有每个标题的最新记录的id,我假设这是OP想要的。@AlexeyFeldgendler:是的,它会。这不会返回带有每个标题的最新记录的id,我假设这是OP想要的。@AlexeyFeldgendler:是的,它会。record
id=1
更“最近”比
id=3
,如果要查看
Date
列?最近的记录是id为1的记录,因此您的查询可能返回了正确的结果。记录
id=1
id=3
更“最近”,如果要查看
Date
列,则最近的记录是Id为1的记录,因此您的查询可能返回了正确的结果。