Sql NewID()不返回随机样本

Sql NewID()不返回随机样本,sql,sql-server,tsql,Sql,Sql Server,Tsql,可能重复: 我之前发布了一个问题 我认为一切都很好,但当我去检查结果的随机性时,我发现没有。查询的其他方面工作正常,但不管我尝试做什么,我都会从表中获取top X数字。由于SQL Server不允许您在子查询中使用order by子句,因此我如何绕过此问题以确保获得的是真正的随机样本?您可以在子查询中使用order by,只要指定TOP子句 老把戏是使用选择100%的前几名。。。在子查询中按NEWID()排序(),以欺骗优化器在查询中间实现子查询 SQL optimizer团队的高层人员表示,

可能重复:

我之前发布了一个问题


我认为一切都很好,但当我去检查结果的随机性时,我发现没有。查询的其他方面工作正常,但不管我尝试做什么,我都会从表中获取
top X
数字。由于SQL Server不允许您在子查询中使用order by子句,因此我如何绕过此问题以确保获得的是真正的随机样本?

您可以在子查询中使用
order by
,只要指定
TOP
子句

老把戏是使用
选择100%的前几名。。。在子查询中按NEWID()排序(
),以欺骗优化器在查询中间实现子查询

SQL optimizer团队的高层人员表示,优化器现在知道将返回所有行并忽略它(尽管这仍然值得一试)


如果失败,请尝试选择顶部2147483647。。。ORDER BY NEWID()要完成与
TOP 100%

相同的任务,可以在子查询中使用
ORDER BY
,只要指定
TOP
子句

老把戏是使用
选择100%的前几名。。。在子查询中按NEWID()排序(
),以欺骗优化器在查询中间实现子查询

SQL optimizer团队的高层人员表示,优化器现在知道将返回所有行并忽略它(尽管这仍然值得一试)


如果失败,请尝试选择顶部2147483647。。。ORDER BY NEWID()完成与
百分之一百的顶级

@juergend相同的任务。我是否应该修改该问题以阐述我新发现的问题并结束此问题?如果你的问题与同一问题有关,那么你不应该再问其他问题。编辑最后一个问题。这样,它将被推入活动问题队列。@wootscootinboogie。前面的问题在查询中没有排序依据或顶部。我建议你删除这个问题。然后,重新提问,包括查询和其他相关信息。@GordonLinoff我试图删除,但它被管理员标记,我无法删除。@juergend我是否应该修改该问题以阐述我新发现的问题并关闭此问题?如果你的问题与同一问题有关,那么你不应该再问其他问题。编辑最后一个问题。这样,它将被推入活动问题队列。@wootscootinboogie。前面的问题在查询中没有排序依据或顶部。我建议你删除这个问题。然后,重新提问,包括查询和其他相关信息。@GordonLinoff我试图删除,但被管理员标记了,我无法删除。为什么是max int?就因为这是一个非常大的数字?没错。基本上只是一个有限的值来满足优化器的要求,这也可能是100%有趣的,谢谢。这很有效。你能告诉我为什么我以前的方法不起作用吗?或者你也可以试试“SEELCT TOP 1E2”。为什么是max int?就因为这是一个非常大的数字?没错。基本上只是一个有限的值来满足优化器的要求,这也可能是100%有趣的,谢谢。这很有效。你能告诉我为什么我的方法不起作用吗?或者你也可以试试“SEELCT TOP 1E2”。