代码之家  ›  专栏  ›  技术社区  ›  sven

从中选择顶部(除10个外)。..在Microsoft Access中

  •  12
  • sven  · 技术社区  · 17 年前

    说我有个问题

    SELECT TOP 10 ... FROM ... ORDER BY ...
    

    在Access(好吧,真的是Jet)。问题是:我怎样才能得到所有其他行。..一切 除了 前10名?

    4 回复  |  直到 17 年前
        1
  •  24
  •   Wayne Molina    17 年前

    你不能做点什么吗

    SELECT ... FROM ...
    WHERE PK NOT IN (SELECT TOP 10 PK FROM ...)
    ORDER BY ...
    

    它可能没有那么有效,但这是我唯一能想到的办法。AFAIK SQL中没有“BOTTOM”子句:)

        2
  •  6
  •   BradC    17 年前
    SELECT ... FROM ....
    WHERE myID NOT IN 
        (SELECT TOP 10 myID FROM ... ORDER BY rankfield)
    ORDER BY sortfield
    

    请注意,如果你愿意,你的排序顺序可能与你的排名顺序不同。

    编辑 :另一个想法:如果你已经知道总共有多少行,你可以这样做(假设有1000行):

    SELECT TOP 990 ... FROM .... ORDER BY sortfield DESC
    

    只需翻转排序,然后取剩下的部分。

    当然,如果你仍然希望结果按原始顺序排列,你必须做一些愚蠢的事情,比如:

    SELECT ... 
    FROM (SELECT TOP 990 ... FROM .... ORDER BY sortfield DESC)
    ORDER BY sortfield ASC
    
        3
  •  3
  •   JeffO    17 年前

    您可以创建排名字段( Ways to Create Rank Column )并过滤掉:其中排名>10

        4
  •  3
  •   onedaywhen    17 年前

    这通常在“客户端”上做得更好,而不是在DBMS上,即将表的所有行提取到ADO Classic记录集中,然后使用Filter属性根据条件删除10行,或者先排序后设置,然后跳过前/后10行,或根据需要设置页面长度,然后跳过第一/最后一页,等等。它不仅取决于行数,还取决于目标应用程序,例如,我知道如果这是MS Access报告的数据源,那么过滤掉不需要的行可能会很麻烦。

    推荐文章