考虑这个查询:
SELECT DISTINCT x.*
FROM (
SELECT DISTINCT Id,
VideoId,
[Date],
NTILE(2) OVER(ORDER BY VideoId) AS tile_nr
FROM
[Database].[dbo].[Table] a
) x
WHERE
CONVERT(Date, [Date]) = CONVERT(Date, GETDATE())
视频总行数为 3320。使用 NTILE 功能,我可以将列表分为两部分。因此,当我像这样在末尾加上 AND 时:
AND
x.tile_nr = 1
它将返回结果集的前半部分。问题,或者我认为是一个问题,是第一个结果集大部分时间都包含 1656 条记录。但有时包含 1657 条记录。因此,当我还检索结果集的后半部分时,总数有时会达到 3321。我怎样才能避免这种情况发生?