1
SELECT ITEMID FROM IMPORT_DOCUMENTS 
WHERE ITEMID IN(SELECT ITEM_ID FROM PUBLIC_FOLDER_DOCUMENTS WHERE FOLDER_ID = 96) 
AND (ABS(CAST((BINARY_CHECKSUM(*) * RAND(734014465)) as int))% 369279) < 506 

通常,我们ORDER BY NEWID()在 SQL Server 2008 中使用来获取随机样本,但在这种情况下,客户端要求我们使用RAND([seed])函数来获取我们以后可以再次复制的样本。

上面的查询是我们用来生成一个样本组的。我们想从一组 369,279 条记录中获取大约 500 行。(这解释了 369279 和 506 值)

我们今天很早就运行了,收到了 501 条记录,这正是我们正在寻找的。我们多次重复这些相同的结果。现在,稍后运行它,我们将收到一组不同的 527 条记录。我的理解是这个查询的结果是静态的,但显然不是。鉴于我们使用的查询,谁能解释这些结果如何改变?

请注意,由 定义的人口FOLDER_ID = 96没有任何变化。

谢谢!

4

0 回答 0