Sql 重复的总行数超过
我对SQL Server使用“COUNT(*)OVER()”函数来获取分页的总行数。我使用distinct关键字,但它是获取重复行的行数 总行数通常为772,但查询返回1024,因为存在重复行Sql 重复的总行数超过,sql,sql-server,tsql,Sql,Sql Server,Tsql,我对SQL Server使用“COUNT(*)OVER()”函数来获取分页的总行数。我使用distinct关键字,但它是获取重复行的行数 总行数通常为772,但查询返回1024,因为存在重复行 SELECT DISTINCT ss.ProdSmartId, p.ProdId, ProdName, TotalRowCount = COUNT(*) OVER() FROM ProdSmartSorts ss JOIN dbo.Products p
SELECT DISTINCT
ss.ProdSmartId,
p.ProdId,
ProdName,
TotalRowCount = COUNT(*) OVER()
FROM
ProdSmartSorts ss
JOIN
dbo.Products p ON ss.ProdId = p.ProdId AND p.IsDeleted = 0 AND p.ProdStatus = 1
JOIN
Users u ON p.UserId = u.Id
LEFT JOIN
Pictures pic ON pic.ProdId = p.ProdId AND pic.IsCover = 1
ORDER BY
ss.ProdSmartId
OFFSET 1 ROWS FETCH NEXT 10000 ROWS ONLY
您的计数(*)
不适用于返回的不同值
declare @table table (i int)
insert into @table
values
(1),
(1),
(1),
(1)
select distinct count(*) over() from @table
这就是为什么它们被称为窗口函数。然后,窗口函数为窗口中的每一行计算一个值。由于您没有使用类似于partitionby
或row或range
子句的东西来限制窗口中的行,因此它将对所有行进行计数。但是,您可以使用子查询或其他函数。这取决于你想如何处理它