【问题标题】:Using MySql Statment, How can I select random 10 row from 100 limit?使用 MySql 语句,如何从 100 个限制中随机选择 10 行?
【发布时间】:2021-10-15 10:35:15
【问题描述】:

我遇到了一个问题,需要我运行查询以从 100 条记录(限制 100 条)中随机选择 10 条数据,我的表的总记录多达 9000 条记录。

你们对这个问题有什么想法吗?

【问题讨论】:

  • 哪百条记录?你最多有 9000 条,你想要 10 条,在 100 条记录中是什么意思?
  • @DanielFarrell 例如,我们只得到符合条件的前 100 条记录。然后我们想在前 100 名中随机抽取 10 个。
  • 请检查我修改后的解决方案。
  • 这与随机选择 10 行有何不同?
  • 我们只想获取 100 条具有特定条件的记录 => 然后这 100 条记录随机选择 10 条记录显示在 UI 上。为此,UI 将始终显示不同的数据。 @GordonLinoff

标签: mysql sql select mariadb


【解决方案1】:

使用此查询获取 100 行并随机获取 10 行。

MySQL

  • 修改后的解决方案

一个具有 100 个限制的嵌入式选择和一个具有随机 10 个限制的主选择。

SELECT * FROM
(SELECT * FROM employee LIMIT 100) `a` 
ORDER BY RAND() LIMIT 10;

或者您可以创建一个表,您可以在其中存储前 100 行并从中随机选择 10 行。

喜欢INSERT INTO tbl2 SELECT * FROM tbl1 LIMIT 100;

然后SELECT * FROM tbl2 ORDER BY RAND() LIMIT 10;

  • 旧解决方案
SELECT * FROM tbl1 a 
LEFT JOIN tbl1  b ON a.`col1`=b.`col1`
LIMIT 100, 10;

【讨论】:

  • 即 100 条记录跳过前 10 条,但 RAND() 确实有效地随机选择。
  • 是的,@DanielFarrell 先生,我的第一个查询并没有真正获取前 100 行。它只是随机选择 100 行并从该随机 100 行中获取 10 行。
  • 我将我的解决方案修改为更准确的解决方案。
  • NP。但请注意,旧的解决方案不会选择前 100 行,上面的解决方案会选择前 100 行。
猜你喜欢
  • 2011-05-18
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 2011-09-26
相关资源
最近更新 更多