首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL-Server上的可重复随机排序

问SQL-Server上的可重复随机排序
EN

Stack Overflow用户
提问于 2015-06-26 02:30:29
回答 1查看 856关注 0票数 4

我想知道是否有人知道如何在MS上执行可重复的随机排序。

通过在随机函数上设置种子值,我在其他DB平台上实现了相同的目标:

代码语言:javascript
复制
MySQL/MariaDB: ORDER BY RAND(?);
Oracle: EXEC DBMS_RANDOM.SEED(?); ORDER BY DBMS_RANDOM.VALUE;
Postgres: SELECT SETSEED(?); ORDER BY RANDOM();

但是,我无法在Server上找到相应的内容。通过一些研究,我尝试了语法TABLESAMPLE(100 %)可重复性(Y)。但是TABLESAMPLE似乎没有按任何随机顺序返回行。

SQLFiddle:http://sqlfiddle.com/#!3/d50dd/30

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-26 04:13:19

对于大型表来说,这可能不是最好的解决方案,但它将适用于大多数较小的表集。

ORDER BY RIGHT(STR(RAND(id + seed), 18, 18), 1);

对此所做的解释:

  • 我们根据传递的row_id +种子值生成一个随机浮点值。此浮点数长度为18位。
  • 将随机浮点值转换为一个字符串,该字符串允许我们对该值使用T本机字符串函数。
  • 使用()函数获取随机浮点值的最后一个数字。用它来点菜。

我不确定性能会如何,但我预计这对于大数据集来说是相当平均的。

SQLFiddle:http://sqlfiddle.com/#!3/d50dd/95

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31063915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档