SQL ROWCOUNT

SQL Server ROWCOUNT 设函数会在返回指定数量的记录后停止查询处理。ROWCOUNT 的基本语法如下所示。

SET ROWCOUNT { number (or number variable) }

-- For example,
SET ROWCOUNT 4;

我们将使用下面显示的数据进行演示。

Source Table 1

SQL Server ROWCOUNT 有什么用?

在此示例中,我们将展示 SET ROWCOUNT 如何影响查询。在进行主要的 SQL Server 示例之前,我将使用 COUNT 函数来查找我们的 employee 表包含多少行。

SELECT [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,[HireDate]
FROM [Employee];

SELECT COUNT(*) AS [Number of Records] FROM [Employee]
Counting Total records 1

从上图可以看出,该表包含 14 条记录。现在,让我们使用此 set 函数将记录限制为 7 条。

SET ROWCOUNT 7;
GO
SELECT [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,[HireDate]
FROM [Employee];

查询返回了七条记录。这是因为当查询处理达到第 7 条记录时,它将停止处理其他记录。

ROWCOUNT Function 2

注意:尽管此 ROWCOUNT 不会影响 DELETEUPDATEINSERT 语句,但最好避免使用此语句。而是可以使用 TOP 子句

SQL SET ROWCOUNT OFF 示例

使用 SET ROWCOUNT 0;来停止设置此功能或将其关闭。

SET ROWCOUNT 0;
GO
SELECT [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,[HireDate]
FROM [Employee];
SET ROWCOUNT OFF 3

使用 ROWCOUNT ON TOP 子句示例

如果您同时使用 TOP 子句和 ROWCOUNT,则此函数将覆盖 TOP 子句。

SET ROWCOUNT 5;
GO
SELECT TOP 6 [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,[HireDate]
FROM [Employee];

从下面的屏幕截图中可以看到,我们将其设置为 5,然后选择了 TOP 6。这里,它返回了前 5 条记录,因为一旦达到 5 条,查询执行就会停止。

ROWCOUNT Function 4