我有一个访问数据库,我很清楚它的设计很糟糕,不幸的是它是我必须使用的。它看起来有点像:
(行#不是数据库中的一列,它只是帮助我描述我追求的内容)
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出现的所有条目,但我无法使其工作。任何帮助赞赏。
感谢。
答案 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
)