SQL按日期获取最后一个唯一条目

时间:2013-08-20 14:52:29

标签: sql ms-access-2007

我有一个访问数据库,我很清楚它的设计很糟糕,不幸的是它是我必须使用的。它看起来有点像:

(行#不是数据库中的一列,它只是帮助我描述我追求的内容)

Row#    ID       Date       Misc
1       001    01/8/2013      A
2       001    01/8/2013      B
3       001    01/8/2013      C
4       002    02/8/2013      D
5       002    02/8/2013      A
6       003    04/8/2013      B
7       003    04/8/2013      D
8       003    04/8/2013      D

我要做的是获取为最后n个(按日期)“条目”输入的所有信息,其中“条目”是具有唯一ID的所有行。

因此,如果我想要最后一个条目,我将获得第6,7和8行。最后两个条目将获得4-8行等。

我试图在子选择中获得所需的SN,然后选择那些SN出现的所有条目,但我无法使其工作。任何帮助赞赏。

感谢。

2 个答案:

答案 0 :(得分:1)

我认为这会奏效:

select * 
from table 
where Date in (
    select distinct(Date) as unique_date from table order by unique_date DESC limit <num>
)

我们的想法是使用限制的子选择来仅识别您关心的日期。

编辑:有些数据库不允许子查询中的限制(我在看你,mysql)。在这种情况下,您必须从子查询中创建一个临时表,然后从中选择*。

答案 1 :(得分:1)

正确的Access语法:

select * 
from t 
where ID in (select top 10 ID
             from t
             group by ID
             order by max([date]) desc
            )