gpt4 book ai didi

mysql - LIMIT 由 1 到 10 之间的随机数

转载 作者:行者123 更新时间:2023-11-28 23:39:20 25 4
gpt4 key购买 nike

本质上,我想返回最近 21 天的 X 条记录,上限为 10 条记录。

如何向 MySQL 中的查询添加随机 LIMIT

这是我的查询,X 是随机数 1-10。

SELECT releases.id, COUNT(charts_extended.release_id) as cnt FROM releases
INNER JOIN charts_extended
ON charts_extended.release_id=releases.id
WHERE DATEDIFF(NOW(), releases.date) < 21
GROUP BY releases.id
ORDER BY RAND()
LIMIT 0, X

我尝试使用 RAND() * 10 + 1,但它给出了语法错误。

有没有办法使用纯 SQL 来做到这一点?即不使用应用程序语言将查询“构建”为字符串并让应用程序语言以编程方式填写X

最佳答案

Eureka ...

在伪代码中:

  • 执行查询以选择 10 个随机行
  • 从中选择,使用用户定义的变量分配行号 0-9 来计算
  • 单击 rand() 进行交叉连接以创建一个数字 0-9 并选择行号小于或等于该数字的所有行

这是解决方案的本质(您可以调整您的查询以使用它:

select * from (
select *, (@row := coalesce(@row + 1, 0)) row from (
// your query here, except simply LIMIT 10
select * from mytable
order by rand()
limit 10
) x
) y
cross join (select rand() * 10 rand) z
where row <= rand

参见 SQLFiddle .运行它几次,您会看到您得到 1-10 个随机行。

如果您不想看到行号,您可以更改外部 select * 以仅从内部查询中选择您想要在结果中显示的特定列。

关于mysql - LIMIT 由 1 到 10 之间的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34849358/

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