Sql 选择“在MS Access 2010查询中不工作的前N名”

Sql 选择“在MS Access 2010查询中不工作的前N名”,sql,ms-access-2010,Sql,Ms Access 2010,它没有像预期的那样给我返回1张唱片 SELECT TOP 1 ApplicationVersion FROM [All Documents] ORDER BY Iif(IsNumeric([ApplicationVersion]), Clng([ApplicationVersion]), 0) DESC 哪里出了问题?我发现Access 2010中“选择前1名”出现了2007年没有的新问题: 如果查询在结果集中返回多条“位于顶部”的记录,其中排序字段相同,则即使未排序的字段不同,top 1也

它没有像预期的那样给我返回1张唱片

SELECT TOP 1 ApplicationVersion 
FROM [All Documents]
ORDER BY Iif(IsNumeric([ApplicationVersion]), Clng([ApplicationVersion]), 0) DESC

哪里出了问题?

我发现Access 2010中“选择前1名”出现了2007年没有的新问题:

  • 如果查询在结果集中返回多条“位于顶部”的记录,其中排序字段相同,则即使未排序的字段不同,top 1也将返回所有这些记录。我通过添加另一个排序的字段(一个时间戳)来解决这个问题,这个字段永远不会是相同的

  • 向使用“TOP 1”子查询的查询添加条件不起作用。例如:

    从[my_top_1_query]中选择[my_top_1_query].*其中my_id=1234

    不起作用。 如果我直接将条件添加到[my_top_1_query],那么它确实可以工作


  • 我认为,在2010年,JET在组装此类查询的方式上发生了变化。

    JET的
    TOP
    行为类似于SQL Server的
    TOP与TIES
    。尝试按[…您想要的…]排序,DocumentIDOrPrimaryKeyColumn我发现了问题,如果您有两行具有相同的ApplicationVersion,则它将返回两行而不是一行。选择顶部不起作用..奇怪。。