如果使用TOP,如何判断SQL服务器是否正在修剪结果?

Con*_*ngo 7 c# sql sql-server sql-server-2008-r2 sql-server-2012

我有这个SQL查询:

SELECT TOP 10 * FROM MyTable
Run Code Online (Sandbox Code Playgroud)

如何判断结果是否缩短,即MyTable实际上有多于10行?

RBa*_*ung 9

最简单的方法是添加一个COUNT..OVER列,该列返回同一查询中表中的总行数:

SELECT TOP 10 *, COUNT(*) OVER() As TotalRows FROM MyTable
Run Code Online (Sandbox Code Playgroud)

执行FROM和WHERE子句之后应用TOP子句之前计算此总数.

  • 但是,我想我也会指出,选择没有order by子句的前x个记录是荒谬的. (4认同)
  • 该死的.错过了2秒... upvoted. (2认同)

xan*_*tos 5

作弊:

SELECT TOP 11 * FROM MyTable
Run Code Online (Sandbox Code Playgroud)

并检查是否有11行:-)然后忽略第11行.请注意,根据您撰写的评论,您可能无法理解:您执行此查询而不是TOP 10查询.

如果<= 10行,则返回整个结果集TOP 10.如果有11行,那么显然TOP 10是不够的.


Muh*_*him 2

您可以使用COUNT来获取总行数。

SELECT COUNT(*)
FROM MyTable
Run Code Online (Sandbox Code Playgroud)

您可以检查该结果是否大于 10 以确定它是否超过 10 行。