我想知道是否有人知道如何在MS SQL Server上执行可重复的随机排序。
通过在随机函数上设置种子值,我在其他数据库平台上实现了相同的目标:
MySQL/MariaDB: ORDER BY RAND(?);
Oracle: EXEC DBMS_RANDOM.SEED(?); ORDER BY DBMS_RANDOM.VALUE;
Postgres: SELECT SETSEED(?); ORDER BY RANDOM();
但是,我无法在SQL-Server上找到相应的内容。 做了一些研究,我尝试了语法TABLESAMPLE(100 PERCENT)REPEATABLE(Y)。但TABLESAMPLE似乎没有以任何随机顺序返回给我行。
SQLFiddle:http://sqlfiddle.com/#!3/d50dd/30
答案 0 :(得分:1)
这可能不是大表的最佳解决方案,但它适用于大多数较小的表集。
ORDER BY RIGHT(STR(RAND(id + seed), 18, 18), 1);
解释这是做什么的:
我不确定性能如何,但我预计这对于大型数据集来说非常平均而且不好。
SQLFiddle:http://sqlfiddle.com/#!3/d50dd/95