我想知道是否有人知道如何在MS上执行可重复的随机排序。
通过在随机函数上设置种子值,我在其他DB平台上实现了相同的目标:
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
发布于 2015-06-26 04:13:19
对于大型表来说,这可能不是最好的解决方案,但它将适用于大多数较小的表集。
ORDER BY RIGHT(STR(RAND(id + seed), 18, 18), 1);
对此所做的解释:
我不确定性能会如何,但我预计这对于大数据集来说是相当平均的。
SQLFiddle:http://sqlfiddle.com/#!3/d50dd/95
https://stackoverflow.com/questions/31063915
复制相似问题