大查询结果中的随机行

发布于 2024-09-14 08:18:54 字数 367 浏览 0 评论 0原文

我需要从索引列上使用 SQL select 检索的查询结果中获取 1-2 行,而不获取整个记录集。

例如,我将使用查询检索 10000 条记录

SELECT * FROM table WHERE field 1>1 AND field1 < 10

,但由于数据库的高负载,我只需要此查询中的 1 个随机行。

我可以使用

SELECT * FROM table WHERE field 1>1 AND field1 < 10 LIMIT 100, 1

但我不知道记录数来使用正确的偏移范围

我怎样才能实现这个目标?

I need to get 1-2 rows from query result retrived with SQL select on indexed columns without getting the whole record set.

For example I will retrieve 10 000 records using query

SELECT * FROM table WHERE field 1>1 AND field1 < 10

but I need only 1 random row from this query regarding to highload of my database.

I can use

SELECT * FROM table WHERE field 1>1 AND field1 < 10 LIMIT 100, 1

But I don't know records numebr to use correct offset range

How can I achieve this goal?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

满栀 2024-09-21 08:18:55

您可以使用 ORDER BY RAND()

SELECT * FROM table WHERE field1 > 1 AND field1 < 10 ORDER BY RAND() LIMIT 1

这将返回 1 个随机行,其中 field1 在 1 到 10 之间

You could use ORDER BY RAND()

SELECT * FROM table WHERE field1 > 1 AND field1 < 10 ORDER BY RAND() LIMIT 1

This will return 1 random row with field1 in between 1 and 10

嘿咻 2024-09-21 08:18:55

首先限制您选择的记录怎么样?

SELECT * FROM table WHERE field1 IN (CONVERT(RAND()*10,SIGNED),CONVERT(RAND()*10,SIGNED)) LIMIT 2

How about restricting the records you select in the first place?

SELECT * FROM table WHERE field1 IN (CONVERT(RAND()*10,SIGNED),CONVERT(RAND()*10,SIGNED)) LIMIT 2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文