【问题标题】:MySQL: Can you specify a random limit?MySQL:你能指定一个随机限制吗?
【发布时间】:2014-01-11 23:36:15
【问题描述】:

有没有办法在 SQL (MySQL) 中随机化一个限制数?

我希望能够在查询中获得随机数量的结果,以便在插入子查询中使用,而无需任何服务器端脚本。我希望能够作为假设说明运行的查询是:

SELECT id FROM users ORDER BY RAND() LIMIT RAND() * 1000

这当然行不通,但是还有另一种方法可以随机化限制数吗?有很多随机化一组有限结果的示例,但我在网上找不到任何关于设置随机限制的信息。

【问题讨论】:

  • 好一个..当我遇到同样的问题时,我使用了order by Rand() limit 10
  • 如果您使用应用程序调用 MySQL,您可以轻松地随机化应用程序中的值。
  • 我需要在子查询中使用结果,所以设置变量等不起作用(至少我认为不会)。

标签: mysql sql random sql-limit


【解决方案1】:

这个怎么样:

    SELECT * 
      FROM users
     ORDER BY RAND()
     HAVING RAND() * 1000 < 10

子句WHERE RAND() * 1000 &lt; 10 随机选择以 1% 的概率包含每一行。这不完全是 LIMIT variable 子句,但会做大致相同的事情。

【讨论】:

  • 这很好!我不得不重新格式化它,但这个想法既美味又简单! SELECT * FROM users WHERE RAND() * 1000 &lt; 10 ORDER BY RAND();
【解决方案2】:

专门针对 MySQL:

SET @i = 0;
SELECT * 
FROM users
WHERE (@i:=@i+1) < RAND()*1000
ORDER BY RAND();

【讨论】:

  • 不起作用。我想在没有任何变量的单个查询中完成此操作。
  • 是的,这也很好用!这不是一个单一的查询,所以获胜的答案更适合我的需求,但这仍然是一个很好的解决方案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-31
  • 2022-10-23
  • 1970-01-01
  • 2018-07-22
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多