SQL按日期获取n个最后唯一的条目
我有一个access数据库,我很清楚它的设计非常糟糕,不幸的是我必须使用它。它看起来有点像以下内容: 行不是数据库中的一列,它只是用来帮助我描述我想要什么SQL按日期获取n个最后唯一的条目,sql,ms-access-2007,Sql,Ms Access 2007,我有一个access数据库,我很清楚它的设计非常糟糕,不幸的是我必须使用它。它看起来有点像以下内容: 行不是数据库中的一列,它只是用来帮助我描述我想要什么 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
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的所有行
因此,如果我想要最后1个条目,我将得到第6、7和8行。最后两个条目将得到第4-8行等
我尝试在子选择中获取所需的序列号,然后选择那些序列号出现的所有条目,但无法使其工作。谢谢你的帮助
谢谢 我认为这会奏效:
select *
from table
where Date in (
select distinct(Date) as unique_date from table order by unique_date DESC limit <num>
)
这样做的目的是使用带有限制的subselect来只标识您关心的日期
编辑:有些数据库不允许在子查询中设置限制。我在看你,mysql。在这种情况下,您必须从子查询中创建一个临时表,然后从中选择*。正确的访问语法:
select *
from t
where ID in (select top 10 ID
from t
group by ID
order by max([date]) desc
)
谢谢你。我正在进步,但这仍然给我带来了不确定的数据。你知道为什么当我只运行前1的子查询时,我得到了8个ID值吗?我已经计算出来了。似乎001-1和001-2的两个值被计算为同一个值。谢谢