gpt4 book ai didi

sql-server - SQL-Server 上的可重复随机排序

转载 作者:行者123 更新时间:2023-12-01 05:03:33 24 4
gpt4 key购买 nike

我想知道是否有人知道如何在 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

最佳答案

这可能不是大表的最佳解决方案,但它适用于大多数较小的表集。
ORDER BY RIGHT(STR(RAND(id + seed), 18, 18), 1);
关于它的作用的解释:

  • 我们根据传递的 row_id + 种子值生成一个随机浮点值。此浮点值的长度为 18 位。
  • 将随机浮点值转换为字符串,这样我们就可以在该值上使用 T-SQL native 字符串函数。
  • 使用 T-SQL RIGHT() 函数获取随机浮点值的最后一位。使用它来订购。

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

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

    关于sql-server - SQL-Server 上的可重复随机排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31063915/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com