gpt4 book ai didi

mysql - 如何在每次执行 SQL 查询时选择随机唯一记录

转载 作者:行者123 更新时间:2023-11-29 01:46:46 25 4
gpt4 key购买 nike

我有一个表“masterurls”,它有超过 100 万条记录。我想在每次执行查询时获取随机记录。它不应该有任何在以前的执行中获取的记录。我已经有了这个查询:

SELECT m.url FROM masterurls ORDER BY RAND() LIMIT 200

问题是上面的查询只返回前 20000 条记录并且每次都随机化。

最佳答案

由于您可以将种子参数传递给 RAND() 函数,因此您可以通过在第一页之前生成种子来“分页”随机结果。

示例代码:对于第一页(因语言而异):

int seed = Math.abs(new Random().nextInt());

SQL查询:

SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;

将种子存储在某处(对于基于 Web 的应用程序,您可以使用 url 参数或 session )。对于下一页:

SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;

注意:按 RAND() 排序是一项繁重的操作,您最好使用 url 的哈希码存储索引列,然后使用基于模块或其他随机函数。

关于mysql - 如何在每次执行 SQL 查询时选择随机唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4966154/

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