我在下面有一张表
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
知道我该怎么做吗?请帮忙
答案 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行,我不确定这真的是你所追求的。)