首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使删除了一些行,带有种子值的随机排序是否会再次返回相同的集合?

即使删除了一些行,带有种子值的随机排序是否会再次返回相同的集合?
EN

Stack Overflow用户
提问于 2019-06-18 20:51:33
回答 1查看 83关注 0票数 2

我正在编写一个分页API,通过设置随机种子值来提供随机结果。除非用户想要混洗结果,否则结果将是相同的,但如果用户想混洗,我将重新创建种子值,以便返回一组不同的记录。

我这里的问题是,如果我从数据库中删除一条记录,即使种子是相同的,结果也会因为元素长度的变化而不同。有没有办法让它即使在记录被删除之后也保持不变?

查询示例:

代码语言:javascript
复制
set seed to 0.1; select * from table order by random();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 21:48:27

我不会按random()排序,因为它无法正确控制。

如果你想要一个可靠的,但看似随机的顺序,你可以使用散列函数:

代码语言:javascript
复制
SELECT * FROM atable ORDER BY hashint4(id);

这在DELETE上是稳定的,因为散列值不会改变。

如果您需要不同的“随机”顺序,请以可重复的方式生成一个随机整数并使用

代码语言:javascript
复制
... ORDER BY hashint4(id + 42)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56649606

复制
相关文章

相似问题

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