我需要批量选择记录,如下例所示,我们有 20 条记录。如果我给出 10 的批量大小,则会有两个循环。这里的问题是,如果我做前 10 名,那么 555 值将被拆分,因为它的位置是 10 和 11。因此 555 也应该包括在第一批中。我怎么能做到这一点?这只是示例,我有 9 亿条记录要处理,而我的批次在实际场景中将是 200 万条。
ID
-------
111
111
111
222
222
333
333
444
444
555
555
666
666
777
777
888
888
您可以使用top with ties
- 这可能会返回更多记录然后声明,但不会破坏不同批次的类似 ID:
创建并填充示例表(请在您以后的问题中保存我们这一步):
DECLARE @T AS TABLE
(ID int)
INSERT INTO @T VALUES
(111),(111),(111),
(222),(222),
(333),(333),
(444),(444),
(555),(555),
(666),(666),
(777),(777),
(888),(888)
选择语句:
SELECT TOP 10 WITH TIES ID
FROM @T
ORDER BY ID
结果:
row ID
1 111
2 111
3 111
4 222
5 222
6 333
7 333
8 444
9 444
10 555
11 555
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句