我想知道是否有人知道如何在 MS SQL Server 上执行可重复的随机排序。
我通过在随机函数上设置种子值在其他数据库平台上实现了相同的效果:
MySQL/MariaDB: ORDER BY RAND(?);
Oracle: EXEC DBMS_RANDOM.SEED(?); ORDER BY DBMS_RANDOM.VALUE;
Postgres: SELECT SETSEED(?); ORDER BY RANDOM();
Run Code Online (Sandbox Code Playgroud)
但是,我在 SQL-Server 上找不到等效项。经过一些研究,我尝试了语法 TABLESAMPLE(100 PERCENT) REPEATABLE(Y)。但 TABLESAMPLE 似乎没有以任何随机顺序返回行。
SQLFiddle: http: //sqlfiddle.com/#!3/d50dd /30
这可能不是大型表格的最佳解决方案,但它适用于大多数较小的表格集。
ORDER BY RIGHT(STR(RAND(id + seed), 18, 18), 1);
解释一下它的作用:
我不确定性能如何,但我预计对于大型数据集来说,性能会相当平均甚至很差。
SQLFiddle: http: //sqlfiddle.com/#!3/d50dd /95
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |