我早些时候发布了一个问题,here
我觉得一切都很好,但是当我去检查结果的随机性时,我发现没有。查询的其他方面可以正常工作,但是无论我试图做什么,我都从表中获得了top X编号。由于Server不允许您在子查询中使用order子句,所以我如何才能避免这种情况,以确保得到了一个真正随机的示例?
发布于 2012-11-29 17:44:46
只要指定了一个ORDER BY子句,就可以在子查询中使用TOP。
以前的诀窍是在子查询中使用SELECT TOP 100 PERCENT ... ORDER BY NEWID()来欺骗优化器,使子查询中间查询具体化。
SQL优化器团队中的高层人员说,优化器现在知道将返回所有行,忽略它(尽管它仍然值得一试)
如果失败,请尝试SELECT TOP 2147483647 ... ORDER BY NEWID()完成与TOP 100 PERCENT相同的任务
https://stackoverflow.com/questions/13631494
复制相似问题