(T-SQL)数据库表中的随机记录如何实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

是否有一种从SQL服务器表中检索随机记录的简洁方法?

我想随机化我的单元测试数据,所以我正在寻找一种从表中选择随机id的简单方法。在英文中,选择是“从表中选择一个id,其中id是表中最低的id和表中最高的id之间的随机数。”

我想不出一种不需要运行查询、测试空值、然后重新运行if null的方法。

提问于
用户回答回答于

是否有一种从SQL服务器表中检索随机记录的简洁方法?

SELECT TOP 1 * FROM table ORDER BY NEWID()

GUID是从第四版开始生成的伪随机数:版本4的UUID是用来从真正的随机或伪随机数生成UUID的. 算法如下:

- Set the two most significant bits (bits 6 and 7) of the   clock\_seq\_hi\_and\_reserved to zero and one, respectively.
- Set the four most significant bits (bits 12 through 15) of the   time\_hi\_and\_version field to the 4-bit version number from   Section 4.1.3.
- Set all the other bits to randomly (or pseudo-randomly) chosen   values.

用户回答回答于

在较大的表上,也可以使用TABLESAMPLE为了避免扫描整个表。

SELECT  TOP 1 *
FROM YourTable
TABLESAMPLE (1000 ROWS)
ORDER BY NEWID()

ORDER BY NEWID仍然需要避免只返回数据页中首先出现的行。

扫码关注云+社区