mysql - LIMIT 然后 RAND 而不是 RAND 然后 LIMIT

标签 mysql limit random

我正在使用全文搜索来提取行。
我根据分数 (ORDER BY SCORE) 对行进行排序,然后在前 20 行 (LIMIT 20) 中,我想对结果集进行兰德 (RAND)。

因此,对于任何特定的搜索词,我想随机显示前 20 个结果中的 5 个。

我的解决方法是基于代码的——我将前 20 个放入一个数组,然后随机选择 5 个。

有sql的方法吗?

最佳答案

您可以使用内部选择来做到这一点。在内部选择中选择前二十行。在外部选择中,随机排列这些行并选择前五行:

SELECT *
FROM (
    SELECT *
    FROM table1
    ORDER BY score DESC
    LIMIT 20
) AS T1
ORDER BY RAND()
LIMIT 5

关于mysql - LIMIT 然后 RAND 而不是 RAND 然后 LIMIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2648076/

相关文章:

PHP mysql_query数据大小限制?

java - 如何以编程方式生成随机 JavaFX xyChart

assembly - 如何使用 FASM 编译器以汇编语言生成随机数?

mysql - 如何对 MySQL 结果进行排序,同时从订单标题中排除字符串

mysql - 在 MySQL 中,如何解决无法使用定义的字符串作为索引的问题?

mysql - 从 mysql 中的两个表获取数据,连接在这里不起作用

Erlang: gen_tcp:recv() 没有收到客户端发来的数据包?

mysql - MySQL/Access 映射表

mysql - 在带有 LEFT JOIN 的查询中使用 MySQL LIMIT

python-3.x - 将嵌套列表转换为字典 | Python