sql - 在仅选择 PageSize 需求之前计算表中的行数
问题描述
tblEmployees500k
在我选择行数之前,我试图获取表中的总行数@PageNumber
ALTER PROCEDURE [dbo].[spPagination] -- ORDER BY EmployeeID
@PageNumber INT,
@PageSize INT
AS
BEGIN
SET NOCOUNT ON;
SELECT Emp.id ,Emp.[firstName], Emp.[lastName], Emp.[salary], Emp.[startDateWork], Emp.age, Count(1) AS [RecordCount]
FROM [dbo].[tblEmployees500k] Emp
ORDER BY id
OFFSET @PageSize * (@PageNumber - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE);
END
但Count(1) AS [RecordCount]
导致错误
olumn 'dbo.tblEmployees500k.id' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
解决方案
使用窗口函数:
Count(*) over () AS [RecordCount]
(count(1)
并且count(*)
是等价的。)
推荐阅读
- javascript - 节点:将 ES6 JS 模块合并到一个 .min.js 文件中
- javascript - Swift和Javascript不同的Bitwise计算结果
- linux - How can I enable auto-login into Debian 10 xfce session?
- amazon-web-services - EC2 实例自动加入 EC2 中托管的 AD
- github-actions - github 动作矩阵中的配对值
- javascript - Select2 函数不能以动态形式工作
- angular - 如何根据元素数量添加传单地图
- azure-devops - AzureDevops:使用来自另一个管道的工件
- ruby-on-rails - Rails 和 Rake 中止!未知二进制格式
- python - 排序列表中的变量分隔符到字符串