1

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

4

2 回答 2

6

您想获得第一条记录,但那不是最近的. 子查询背后的想法是,它获取每个标题的第一个日期,并将其与自身连接起来,前提是它与标题和日期匹配。

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
于 2012-11-25T23:11:56.590 回答
3

你想要分组最大值

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

sqlfiddle上查看。

如果你用最高的而不是最新的来定义“最近的” :idDate

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

sqlfiddle上查看。

于 2012-11-25T23:11:57.907 回答