我有一个包含以下字段的表的访问数据库:EntryID
,MaterialNumber
EntryID MaterialNumber
1 123
2 124
3 125
4 125
5 126
我尝试编写一个返回最后3个不同材料编号的查询。
MaterialNumber
126
125
124
当我运行此查询时:
SELECT TOP 3 MaterialNumber
FROM (SELECT EntryID, MaterialNumber FROM Table1 ORDER BY EntryID DESC);
我明白了:
126
125
125
当我将DISTINCT
添加到查询中时:
SELECT DISTINCT TOP 3 MaterialNumber
FROM (SELECT EntryID, MaterialNumber FROM Table1 ORDER BY EntryID DESC);
我得到(不是前三个条目,而是三个最低条目):
123
124
125
任何人都可以帮助制定查询并解释我做错了吗?
答案 0 :(得分:0)
这也让我失望了 - 我认为当你运行select distinct时,Access会重新排序数据。在MySQL中我相信你可以通过ID desc和group按ordernumber而不是ID来订购,但我还没有测试过它。但对于Access来说,这是一种方式
Select materialnumber from (
Select top 3 max(entryid), materialnumber from table1
group by materialnumber order by max(entryid) desc)