MySQL - 选择最大日期

时间:2013-01-28 14:18:55

标签: mysql

我在下面有一张表

id  Title datetime       Details
---|----- |------------|--------|---------
1  | AAA  | 28/03/2009 | AAAAA
2  | BBB  | 26/03/2009 | BBBBB
3  | CCC  | 27/03/2009 | CCCCC

我想只显示最新日期的2条记录

记录需要显示如下

id  Title datetime       Details
---|----- |------------|--------|---------
1  | AAA  | 28/03/2009 | AAAAA
3  | CCC  | 27/03/2009 | CCCCC

知道我该怎么做吗?请帮忙

2 个答案:

答案 0 :(得分:0)

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
          SELECT DISTINCT dateTime
          FROM   tableName
          ORDER  BY STR_TO_DATE(datetime, '%d/%m/%Y')  DESC
          LIMIT  2
        ) b ON a.datetime = b.datetime

为了获得更好的效果,请在INDEX列上创建datetime,如果可能,请将日期值修改为yyyy/MM/dd,并将其数据类型更改为DATETIME,以便您到目前为止,它不会从字符串中进行任何转换,因为它可能会降低性能。

答案 1 :(得分:0)

您可以按日期时间desc订购,然后使用LIMIT。

如果datetime字段存储为日期(或日期时间):

SELECT   yourtable.*
FROM     yourtable
ORDER BY yourtable.datetime desc
LIMIT    2

如果将datetime存储为varchar,您可以按此顺序排序:

ORDER BY STR_TO_DATE(datetime, '%d/%m/%Y') desc

(如果有超过两个记录的最后日期,这将只显示2行,我不确定这真的是你所追求的。)