-1

我在下面有一张表

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

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

4

2 回答 2

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

为了获得更好的性能,请创建一个INDEXon 列datetime,如果可能,将日期的值修复为yyyy/MM/dd并将其数据类型更改为,DATETIME这样您就不会从字符串转换为日期,因为它可能会降低性能。

于 2013-01-28T14:25:53.490 回答
0

您可以按 datetime 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 行,我不确定这真的是你想要的)。

于 2013-01-28T14:40:53.897 回答