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

为什么不按新闻日期从新闻表顺序中选择前5名?

  •  1
  • pixeldev  · 技术社区  · 17 年前

    我有一个非常简单的SQL字符串,MS Access似乎不喜欢它。

    按新闻日期从新闻表格顺序中选择前5个*

    这将返回news_表中的所有行,而不仅仅是前5行。

    我认为这是一个简单的SQL语句,显然不是。

    5 回复  |  直到 17 年前
        1
  •  3
  •   Fionnuala    17 年前

    选择Top n选择记录相等的所有记录,也就是说,如果选择Top 2,并且有20条date1和20条date2,则将选择40条记录。

     Select Top 5 * Order By KeyField
    

    应返回5条记录,因为keyfield是唯一的。

        2
  •  1
  •   Bob Probst    17 年前

    这能奏效吗?

    select top 5 * 
    from (select * from news_table order by news_date) 
    

    编辑:未指定业务规则。我不完全明白我们的目标是排名第一,获得前5名。它可能是获得前5项记录,然后对它们进行排名。

    我无法在我的Access版本中重现您的问题。奇怪的

        3
  •  1
  •   Sam    17 年前

    我过去在Access中遇到过类似语句的问题。为了调试类似的问题,我总是将查询分解为多个查询。我建议在access中创建一个查询,用ORDERBY语句执行select操作。然后执行“从该查询中选择顶部”。

    查询1=>从新闻表格中选择*按新闻日期排序;

    查询2=>从查询1中选择前5名;

        4
  •  -1
  •   sth    15 年前

    我几乎从不使用 *

    SELECT TOP 5 news_table.* FROM news_table ORDER BY news_date
    

    我总是这样写的。

    对 SELECT TOP 5 *

        5
  •  -2
  •   sth    15 年前

    尝试

    Select Top 5 From news_table Order By news_date