如何在MySQL GROUP BY中返回DATE之前的第一条记录



我在表中有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的记录。我该怎么做?

您想要获得第一条记录,但这不是最近的。子查询背后的想法是,它获得每个标题的第一个日期,并在匹配标题和日期的情况下将其与自己连接起来。

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 * 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上查看。

我会做一些简单的事情,比如

SELECT
Id as Id,
MAX(Date) as Date
FROM NameOfYourTable 
GROUP BY Id

最新更新