如何在MySQL组中按日期返回第一条记录?
表中有30条记录,标题相同,但每个记录的ID和日期不同。如何在查询中按日期返回最近的日期 该表如下所示:如何在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的记录。我该怎么做呢?您想获得第一条记录,但这不是最近的记录。子
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:是的,它会。recordid=1
更“最近”比id=3
,如果要查看Date
列?最近的记录是id为1的记录,因此您的查询可能返回了正确的结果。记录id=1
比id=3
更“最近”,如果要查看Date
列,则最近的记录是Id为1的记录,因此您的查询可能返回了正确的结果。