当前位置: 首页 > 面试题库 >

使用TOP 5访问SQL返回超过5个结果?

宦宏爽
2023-03-14
问题内容

我正在使用以下语句

SELECT TOP 5 rootcause, COUNT(IIF(accountability="Team 1",1,0))
FROM  MOAQ
WHERE CDT=1
GROUP BY rootcause

MOAQ是另一个查询,它从4个表返回大约20个字段,没什么特别的。这按预期工作,我得到5个结果。

如果我ORDER BY在条件字段上添加一个子句,尽管我开始得到8个结果。如果我按第一个字段排序,那没有问题。

有人知道会发生什么吗?

编辑以澄清 -我目前仅在Access 2003中进行测试,最终的语句将通过Excel前端通过ADO进行参数化查询。


问题答案:

这是topAccess中指令的一个已知效果,但不是很广为人知。

top指令不会返回最重要的n项目,因为很容易让人相信。相反,它至少返回n由结果的顺序确定的不同项目。

在大多数情况下是相同的,但是在您的示例中,第5到第8项具有相同的订购值,所有这些都包括在内。它返回前五个项目,然后返回所有与第五个项目具有相同订购值的项目。

如果不对表进行任何排序,则将考虑所有字段,因此,如果结果中有唯一字段,查询将始终返回五项。当然,如果订购中包含唯一字段,则同样如此。

SQL的其他方言的行为可能有所不同。例如,top仅在T-SQL(SQL Server)中的伪指令永远不会返回多于n项。然而,通过指定的条款with tiesorder by一起top,人们可以观察到相同的行为在Access中。



 类似资料:
  • 我用http://localhost:8080/oauth2/authorization/google登录,并正常保存到google calendar。 获取访问令牌如下所示: 包含刷新标记。 但1小时后访问令牌过期,我不知道如何刷新它。无需重新登录。 使用长寿命刷新令牌获取新的访问令牌。 我在一个Spring发现了这个带有刷新令牌的谷歌OAuth2,但对我来说不起作用。

  • 问题内容: 我正在使用Access,并尝试复制在MSDN上发现的某些语法。不幸的是,Access语法中的FROM语句似乎有问题。我不知道为什么。 问题答案: MS Access中枢转的语法与sql server不同。您必须使用该功能来旋转数据。 语法将类似于以下内容:

  • 问题内容: 我需要一个SP来返回多组结果。第二组结果将基于第一组结果的一列。 所以: 如何用我的SP返回@ myTable1和@ myTable2?这种语法完全正确吗? 抱歉,我仍然是SQL的新手… 编辑: 因此,我在下面的代码的最后一行看到错误:“必须声明标量变量“ @ myTable1”” 如果我突出显示并运行代码直到第二个代码,它就可以正常工作。 EDIT2: 解决了该问题。谢谢你们。 问题

  • 我有一个包含两个参数的存储过程。我可以在服务器管理工作室成功执行它。它向我显示了我所期望的结果。然而,它也返回一个返回值。 它增加了这一行, 我希望存储过程返回它在结果中显示给我的表,而不是返回值,因为我从MATLAB调用这个存储过程,它返回的都是true或false。 我需要在存储过程中指定它应该返回什么吗?如果是这样,我如何指定一个包含4列的表(varchar(10)、float、float、

  • 问题内容: 我正在寻找一种在Java App(使用JDBC)中打开Access MDB文件的方法。 快速的Google搜索建议我为此需要JDBC-ODBC Bridge。 这是否意味着我需要配置要在其上运行应用程序的每个系统,以便为要打开的MDB提供ODBC DSN? 还有一个问题(因为我以前从未使用过ODBC):通信是通过某种套接字(以客户机/服务器方式)还是通过方法/函数调用(例如嵌入Derb

  • 我有下面的SQL查询,我在flink工作中使用。< code>mysql_table是使用JDBC连接器创建的,而< code>kafa_source表是从传入的kafka流创建的。 我在两者之间执行时态连接,当我在Flink的sql-client CLI中检查时,运行良好(用< code>flink-faker测试)。内部查询工作得非常好,并且正在打印结果。有人能帮助我找出这个问题吗? 编辑:我